2016-11-22 129 views
2

我有一个表审核如何在Sql Server中插入查询时自动生成UniqueIdentifier?

CREATE TABLE AUDITS 
(
    Audit_ID uniqueidentifier not null, 
    LocationID char(10) 
     FOREIGN KEY REFERENCES LOCATIONS (LocationID) not null, 
    DateChangement date not null, 
    NomColonneChangé varchar (20) not null, 
    AncienneValeur varchar (20) not null, 
    NouvelleValeur varchar (20) not null, 

    CONSTRAINT pk_AUDIT PRIMARY KEY (Audit_ID) 
) 

现在我有一个插入到该表的更新触发,但我想通过SQL Server自动生成的Audit_ID。

我认为这种方式是正确的:

if (......) 
.... 
... 
INSERT INTO [MultiLocation].[dbo].[les_AUDITS] 
     ([LocationID] 
     ,[DateChangement] 
     ,[NomColonneChangé] 
     ,[AncienneValeur] 
     ,[NouvelleValeur]) 
    VALUES 
     (@LocationID , 
     @DateChangement , 
     @NomColonneChangée , 
     @AncienneValeur, 
     @NouvelleValeur) 

但它说,这是不可能插入一个NULL值到Audit_ID

我应该怎么办呢?

回答

5

当你创建一个表,你可以用uniqueidentifier数据类型创建一个列像你一样,用默认DEFAULT newid()如下

CREATE TABLE AUDITS 
(
Audit_ID uniqueidentifier not null DEFAULT newid(), 
LocationID char(10) FOREIGN KEY REFERENCES LOCATIONS (LocationID) not null, 
DateChangement date not null, 
NomColonneChangé varchar (20) not null, 
AncienneValeur varchar (20) not null, 
NouvelleValeur varchar (20) not null, 
constraint pk_AUDIT primary key(Audit_ID) 
) 
+0

感谢。有效 –

相关问题