2010-05-27 103 views
1

的SQL Server 2000SQL插入默認值

說,如果我有一個像

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的問題?

回答

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()); 
0

使用getdate(),併爲IDENTITY列(如果使用uniqueidentifier,我看你不是),你可以使用newid(),並將它們設置在默認值的表的設計視圖。在那之後你只需去:

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

+0

newID是一個UUID/uniqueidentifier ..不能用於身份 – SQLMenace 2010-05-27 18:18:09

+0

@SQL - 我知道,它在那裏。在我回答並澄清之後不久看到。 – 2010-05-27 18:19:29

1

不要懶惰。以正確的方式執行,即指定列列表(不包括標識列)。

+0

但這並不高效。 – Stan 2010-05-27 18:51:12