2015-11-25 73 views
1

enter image description here如何允許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通過自動而無需進入主鍵。

謝謝!

+0

是你說你想把'midx'列設置爲自動增量? –

+0

你的意思是一個身份專欄? 'IDENTITY(1,1)' – mrtig

+0

@TimBiegeleisen yes midx是主鍵並使用自動增量。我想插入而不輸入midx – HighEndGuy

回答

1

通常,主鍵列不能爲空,因爲它必須是表上的聚集索引。

爲了獲得您想要的效果,您應該創建一個帶有非空標識列的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) 
) 
+0

你不明白我已經定義了idx自動增量。我想插入查詢而不輸入主鍵! – HighEndGuy

+0

已更新的答案。 – mrtig

+0

@ mritig謝謝你的回答! – HighEndGuy

0

你可以用競爭柱:

ALTER TABLE coordinfo ADD midx AS idx*100