Но я не могу заставить это работать с SQL Server Express в Visual Studio 2008.
Та же таблица, один столбец с идентификатором и первичным ключом.
Ответ 1
INSERT INTO dbo.TableWithOnlyIdentity DEFAULT VALUES
В моем случае это очень хорошо. Как вы пытаетесь получить эти строки в базе данных? SQL Server Mgmt Studio? SQL-запрос из приложения .NET?
Запуск внутри Visual Studio в окне "Новый запрос" я получаю:
Значение DEFAULT VALUES SQL или утверждение не поддерживается.
== > Хорошо, поэтому Visual Studio не может справиться с этим - это не ошибка SQL Server, а Visual Studio. Вместо этого используйте настоящую SQL Management Studio - она отлично работает!
Использование ADO.NET также работает как шарм:
using(SqlConnection _con = new SqlConnection("server=(local);
database=test;integrated security=SSPI;"))
{
using(SqlCommand _cmd = new SqlCommand
("INSERT INTO dbo.TableWithOnlyIdentity DEFAULT VALUES", _con))
{
_con.Open();
_cmd.ExecuteNonQuery();
_con.Close();
}
}
Кажется, это ограничение VS - не используйте VS для серьезной работы БД:-)
Марк
Ответ 2
Вместо того, чтобы полагаться на некоторый синтаксис "ЦЕННОСТИ ПО УМОЛЧАНИЮ" в качестве ключевого слова, дайте ему возможность помочь вам с этим... Как о явной попытке установить ОДИН из значений, например
insert into YourTable ( PickOneField ) values ( "whatever" )
Итак, несмотря на то, что вы используете только одно поле ONE, новая запись с помощью собственного ядра ДОЛЖНА заполнить REST из них соответствующими значениями по умолчанию.