SQL插入默认值

时间:2010-05-27 18:11:25

标签: sql-server

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有什么解决方法吗?

3 个答案:

答案 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)

使用getdate(),对于IDENTITY列(如果使用我认为您不是uniqueidentifier),您可以使用newid(),并在设计视图中设置它们表中的默认值。之后你就去了:

INSERT INTO Message (Message) VALUES ('blah');