Как вставить в таблицу только один столбец IDENTITY (SQL Express)

В значительной степени то же, что этот вопрос.

Но я не могу заставить это работать с 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 из них соответствующими значениями по умолчанию.