我想在SQL Server數據庫中找出觸發器。我是一名暑期項目的學生,所以我不是專業人士,但可以輕鬆學習。TSQL觸發器來保持增量訂單的完整性
這是我的數據庫表的簡化版本排序按等級:
ID作爲主鍵
ID | RANK
--------------
2 | NULL
1 | 1
3 | 2
4 | 3
7 | 4
我的目標現在是要插入的能力/刪除/更新等級並保持數據庫中等級的增量順序,而沒有缺少可用職位中的數字並且沒有重複。
/* Insert new row */
INSERT INTO TABLE (ID, RANK) VALUES (6, 4)
/* AFTER INSERT */
ID | RANK
--------------
2 | NULL
1 | 1
3 | 2
4 | 3
6 | 4 <- new
7 | 5 <- notice how the rank increased to make room for the new row
我認爲在觸發器中這樣做是最有效/最簡單的方法;雖然我可能是錯的。
除了觸發器,我做了一個臨時解決方案,當任何等級改變時,我使用前端代碼在每一行上運行更新。
如果你知道如何或如果觸發器可以做到這一點,請分享。
編輯:添加方案 被插入的等級將始終採用其分配的編號。所有大於或等於被插入的東西都會增加。
引起觸發的排名將始終優先聲明其編號,而其他所有排名都會增加以適應排名。
如果rank是最高數字,那麼觸發器將確保該數字是最大值的+1。
這會增加。 ID恰好是爲了?如果插入是(2,5)會怎麼樣? – Paparazzi
這會影響你桌子的表現。 –
嘗試使RANK列成爲計算列 –