帶複合主鍵的簡單表。
PK1 smallint, PK2 smallint auto increment, strValue varchar(20) not null.
帶有組合主鍵自動增量一部分的SQL 2008複合主鍵
這可以工作,但PK2的增量與PK1無關。
我想讓PK2從新鮮的PK1開始新鮮。
這裏是我所得到的
1, 1, 1a
1, 2, 1b
2, 3, 2a
2, 4, 2b
我想要什麼
1, 1, 1a
1, 2, 1b
2, 1, 2a
2, 2, 2b
我需要它,我需要從PK2刪除自動遞增並生成INSERT語句的正確的價值?那是否是正確的方法?你推薦Insert語句的語法嗎?自動增量PK1不是一個選項,因爲它是FK關係的一部分。
假設我需要插入2,x,3b並且需要知道爲x分配了什麼值。
不會有很多插入(如100 /天)。 對PK1,strValue有一個唯一的約束。
要清楚我認爲SQL 2008做的是正確的事情,並不是說默認情況下SQL應該以這種方式運行。
是不是(ISNULL(MAX(PK2),0)+ 1?並且strValue ='3b'尚未在表格中。實際上,如果已經有'3b',我需要中止插入,因爲它會違反唯一的約束如果我把所有的事情都放在一個事務處理中,那麼將會有兩次同時插入2,x,3b的難得機會嗎?我應該在插入中放置一個tablock提示嗎? – Paparazzi
我改變了代碼來處理約束 – Asken
但是你沒有取出AND strValue ='3b'。清理它,我會給你檢查。謝謝 – Paparazzi