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 server 2000有什么解决方法吗?
答案 0 :(得分:1)
如果使用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());
答案 1 :(得分:1)
不要偷懒。以正确的方式执行,即指定列列表(不包括标识列)。
答案 2 :(得分:0)