2013-05-02 107 views
0

我想編寫一個觸發器來檢查列中的最高值(表格由4個雙列組成,其中一個作爲主鍵(該字段中的值應該始終大於上一個值條目))。現在有一種方法可以將id列的頂端值與應該插入的新值進行比較,如果新ID的值等於或低於之前的頂端值(當然使用sql觸發器),則回滾事務。 預先感謝您。插入比較的SQL觸發器

+3

您正在使用哪些DBMS?請適當標記問題。 – 2013-05-02 10:02:06

+0

我正在使用mySql – user1033698 2013-05-02 10:10:05

+1

這聽起來像是一個特殊的和脆弱的設計,使一個double而不是一個整數是主鍵,並試圖使它像一個自動增量值或序列。但是你的觸發器只需要下一個ID大於MAX(yourDoublePrimaryKeyValue)。 – Tim 2013-05-02 10:11:41

回答

0

我發現的一種最簡單的方法是檢查您是否得到任何結果。我的意思是這樣的:

if (SELECT COUNT(*) FROM tbl_name WHERE id = id_you_want_check >= 1) { 
    rollback; 
} 

如果你知道在mysql或任何DBMS中使用觸發器(看你的DBMS文檔)。 PS:如同Colin說的那樣,下次發佈你的SQL DBMS很容易爲你找到合適的解決方案。 ;)

+0

建議的解決方案僅測試PK值是否已被使用。 OP希望新ID大於正在使用的最大ID。 – Tim 2013-05-02 10:49:06

+0

然後他應該用'SELECT MAX(pk)'來改變'SELECT COUNT(*)'。像這樣:'if(SELECT MAX(pk)FROM tbl_name == id_you_want_check)...'對不起,我的錯誤理解。 – DaGLiMiOuX 2013-05-02 10:54:58