我基本上要創建一個表像這樣SQLite的自動增量基於另一個列的值
col1|col2
---------
1 1
1 2
1 3
2 1
3 1
2 2
1 4
,其中2列自動遞增,但其自動增量值不依賴於整個表,但1列的值。這可能嗎?
我基本上要創建一個表像這樣SQLite的自動增量基於另一個列的值
col1|col2
---------
1 1
1 2
1 3
2 1
3 1
2 2
1 4
,其中2列自動遞增,但其自動增量值不依賴於整個表,但1列的值。這可能嗎?
我以爲我發現了一個重複的問題,但它是PostgreSQL。暫時將您的問題標爲重複的道歉。我扭轉了這一點。
我不知道某些如果這是可能的SQLite中以自動化的方式,而是一個解決辦法是這樣做的步驟:
BEGIN
交易和INSERT
一行的表col2爲NULL。這應該獲得一個RESERVED鎖,並防止其他併發進程執行相同的操作並導致競爭狀態。
SELECT MAX(col2) FROM mytable WHERE col1 = ?
以獲得迄今爲止給定組插入的最大值。
UPDATE mytable SET col2 = ?+1 WHERE col1 = ? AND col2 IS NULL
使用MAX發現在步驟2中
COMMIT
將更改寫入到文件中。
[BEGIN](http://www.sqlite.org/lang_transaction.html)IMMEDIATE或BEGIN EXCLUSIVE已鎖定。 –
@CL。謝謝你的提示! –
@BillKarwin我不確定這可以很容易地在SQLite中完成。 –