Как вставить в таблицу только один столбец IDENTITY (SQL Express) - PullRequest
21 голосов
/ 01 сентября 2009

Почти так же, как этот вопрос.

Но я не могу заставить его работать с SQL Server Express в Visual Studio 2008.

Та же самая таблица, один столбец с идентификатором и первичным ключом.

Ответы [ 2 ]

37 голосов
/ 01 сентября 2009
 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 для серьезной работы с БД :-) Марк

0 голосов
/ 01 сентября 2009

Вместо того, чтобы пытаться полагаться на некоторый синтаксис «ЗНАЧЕНИЯ ПО УМОЛЧАНИЮ» в качестве ключевого слова, позвольте движку помочь вам с этим ... Как насчет явной попытки установить ОДНО из значений, таких как

insert into YourTable ( PickOneField ) values ( "whatever" )

Таким образом, даже если вы готовите только ОДНО поле, новая запись собственного движка ДОЛЖНА заполнять REST из них соответствующими значениями по умолчанию.

...