我正在使用SQL Server - 插入到表中時,我在表列id
上有一個唯一約束。有插入時,id
列中的值爲0
。這會導致錯誤。更新插入到SQL Server表中的值
如果id
值爲0,是否可以在插入過程中將此id
更新爲另一個值?這是爲了防止錯誤並給它一個有效的值。
可能是觸發器?
我正在使用SQL Server - 插入到表中時,我在表列id
上有一個唯一約束。有插入時,id
列中的值爲0
。這會導致錯誤。更新插入到SQL Server表中的值
如果id
值爲0,是否可以在插入過程中將此id
更新爲另一個值?這是爲了防止錯誤並給它一個有效的值。
可能是觸發器?
觸發器是一種方法,但您可能希望使用filtered index(CREATE UNIQUE INDEX,而不是表約束)來忽略零值。這樣,您不必擔心要放置什麼值
或者,如果您想從另一列填充它,則可以使用具有唯一約束的計算列。
ALTER TABLE whatever
ADD ComputedUniqueCol = CASE WHEN Id = 0 THEN OtherCol ELSE Id END
如果這是您的主鍵,您可以將其指定爲IDENTITY。然後它應該根據種子和增量生成一個自己的值(默認是seed = 1,默認值= 1),所以你不必擔心它。
CREATE TABLE MyTable
(
ID int PRIMARY KEY IDENTITY,
...
)
創建一個「而不是」觸發器並檢查ID上的值。
CREATE trigger checkID
on YOUR_TABLE
instead of insert
as
begin
declare @id int
select @id=id from inserted
if (@id==0) begin
--DO YOUR LOGIC HERE AND THEN INSERT
end else begin
insert into DESTINATION_TABLE (VALUES)
SELECT VALUES FROM INSERTED
end
end
從數據庫設置該列的默認綁定值並嘗試... – 2012-02-06 11:54:47
如何插入數據? – 2012-02-06 11:55:10
通過sql作業插入的數據 – amateur 2012-02-06 11:59:36