如何允許SQL Server空AUTO_INCREMENT主鍵
midx
列是主鍵,使用自動遞增(identity 1,1
)。
當我嘗試使用此查詢中插入數據,這是一個問題:
Insert into coordinfo(mdate, X, Y, lat, lon)
values (GETDATE(), 12344, 334, 34.775, 123.554);
我想增加midx
通過自動而無需進入主鍵。
謝謝!
如何允許SQL Server空AUTO_INCREMENT主鍵
midx
列是主鍵,使用自動遞增(identity 1,1
)。
當我嘗試使用此查詢中插入數據,這是一個問題:
Insert into coordinfo(mdate, X, Y, lat, lon)
values (GETDATE(), 12344, 334, 34.775, 123.554);
我想增加midx
通過自動而無需進入主鍵。
謝謝!
通常,主鍵列不能爲空,因爲它必須是表上的聚集索引。
爲了獲得您想要的效果,您應該創建一個帶有非空標識列的keys
表。
如果您的表的定義如下,用INSERT觸發器,你插入DML將產生一個自動生成的值midx
:
CREATE TABLE keyTable
(
[key] int identity(1,1) primary key not null,
date datetime
)
CREATE TRIGGER myTable_increment_midx ON myTable
after INSERT
AS
BEGIN
DECLARE @key int
INSERT INTO keyTable (date) values (getdate())
SET @key = @@IDENTITY
UPDATE t
set t.midx = @key
FROM mytable t join INSERTED i on i.mdate = t.mdate and ...
END
CREATE TABLE myTable
(
mdate DATETIME,
udate DATETIME,
midx INT PRIMARY KEY NULL, --again, you shouldn't be allowed to do this
X INT,
Y INT,
lat DECIMAL(9, 6),
lon DECIMAL(9, 6)
)
你可以用競爭柱:
ALTER TABLE coordinfo ADD midx AS idx*100
是你說你想把'midx'列設置爲自動增量? –
你的意思是一個身份專欄? 'IDENTITY(1,1)' – mrtig
@TimBiegeleisen yes midx是主鍵並使用自動增量。我想插入而不輸入midx – HighEndGuy