2017-05-03 88 views
0

我基本上要創建一個表像這樣SQLite的自動增量基於另一個列的值

col1|col2 
--------- 
1 1 
1 2 
1 3 
2 1 
3 1 
2 2 
1 4 

,其中2列自動遞增,但其自動增量值不依賴於整個表,但1列的值。這可能嗎?

+0

@BillKarwin我不確定這可以很容易地在SQLite中完成。 –

回答

1

我以爲我發現了一個重複的問題,但它是PostgreSQL。暫時將您的問題標爲重複的道歉。我扭轉了這一點。

我不知道某些如果這是可能的SQLite中以自動化的方式,而是一個解決辦法是這樣做的步驟:

  1. BEGIN交易和INSERT一行的表col2爲NULL。這應該獲得一個RESERVED鎖,並防止其他併發進程執行相同的操作並導致競爭狀態。

  2. SELECT MAX(col2) FROM mytable WHERE col1 = ?以獲得迄今爲止給定組插入的最大值。

  3. UPDATE mytable SET col2 = ?+1 WHERE col1 = ? AND col2 IS NULL使用MAX發現在步驟2中

  4. COMMIT將更改寫入到文件中。

+0

[BEGIN](http://www.sqlite.org/lang_transaction.html)IMMEDIATE或BEGIN EXCLUSIVE已鎖定。 –

+0

@CL。謝謝你的提示! –