SQL Server 2000
Скажите, есть ли у меня таблица как
CREATE TABLE [Message] (
[MessageIdx] [int] IDENTITY (1, 1) NOT NULL ,
[Message] [varchar] (1024) COLLATE Latin1_General_CI_AS NOT NULL ,
[column1] ... ,
[column2] ... ,
... ,
[ValidUntil] [datetime] NULL ,
CONSTRAINT [PK_Message] PRIMARY KEY CLUSTERED
(
[MessageIdx]
) WITH FILLFACTOR = 90 ON [PRIMARY]
) ON [PRIMARY]
GO
С тех пор существует слишком много столбцов, таким образом, я пытаюсь вставить значение без, указывают имена столбцов явно. Я хочу вставить новую строку со всеми столбцами кроме 'MessageIdx' и 'ValidUntil', не указанного. Поэтому я определенно не хочу вводить все имена столбцов. Я попробовал ниже оператора, но он вызывает ошибку. Как я могу сделать это?Спасибо.
insert into message values (DEFAULT,'blah',something, ..., DEFAULT);
Править: AFAIN, сервер SQL 2005 можно пропустить столбец идентификационных данных при вставке. Таким образом, это будет
insert into message values ('blah',something, ..., DEFAULT);
Но есть ли какая-либо работа вокруг для SQL-сервера 2000?
вы должны указать имена столбцов, если вы используете set identity_insert
, но вы можете сделать это
set identity_insert caconfig..fxmessage on;
insert into message (MessageIdx,[Message],[ValidUntil)
values (1,'blah',GETDATE());
set identity_insert caconfig..fxmessage off;
Я предполагаю, что вам действительно нужно это, он сгенерирует для вас значение идентификатора
insert into message ([Message],[ValidUntil) values ('blah',GETDATE());
Используйте getdate()
, а для столбцов IDENTITY (если вы используете uniqueidentifier
, чего, как я вижу, вы не делаете), вы можете использовать newid()
, и установить их в design-view таблицы в значение по умолчанию. После этого вы просто сделаете следующее:
INSERT INTO Message (Message) VALUES ('blah');
Не ленитесь. Сделайте это правильным способом, то есть укажите список столбцов (исключая столбец идентификации).