我想用國家代碼和新的id
這是一個自動增量值更新我的表中的列。MySQL插入之前插入更新列與新的自動增量編號
BEGIN
SET new.key = concat(new.countryCode,new.id);
END
countryCode
工作正常,但id
始終是空白。我怎樣才能實現這樣的事情? id
來自autoincrement
列。
我知道它不工作,因爲它是在插入後生成的。那麼我該如何做這樣的事情呢?
我想用國家代碼和新的id
這是一個自動增量值更新我的表中的列。MySQL插入之前插入更新列與新的自動增量編號
BEGIN
SET new.key = concat(new.countryCode,new.id);
END
countryCode
工作正常,但id
始終是空白。我怎樣才能實現這樣的事情? id
來自autoincrement
列。
我知道它不工作,因爲它是在插入後生成的。那麼我該如何做這樣的事情呢?
AUTO_INCREMENT
只有在插入後設置。
如果您需要訪問那個值,您只能在一個AFTER INSERT
觸發器中。但是,你不能修改列值在AFTER UPDATE
觸發...
此外,你不能在你的AFTER INSERT
觸發作爲(http://dev.mysql.com/doc/refman/5.0/en/stored-program-restrictions.html)表進行更新:
在一個存儲的函數或觸發器,則不允許修改調用該函數或觸發器的 語句已被使用(用於讀取或寫入)的表格 。
這裏唯一合理的解決方案是創建一個存儲過程來更新表,調整相關的列在一個事務中「模仿」你原子INSERT語句。
話雖這麼說,你的具體情況,在key
列是多餘的,因爲該列在同一行的其他兩列的僅僅是串聯。
鑑於它的名字,你不是在尋找一種方法來創建一個複合密鑰嗎?類似的東西:
ALTER TABLE tbl ADD UNIQUE KEY (countryCode, id);
爲什麼不只是創建一個返回該連接值的視圖?沒有真正的需要存儲這個。 –
我需要在其他地方使用的價值。我只在這裏使用了2個值。還有更多將被連接。 – Norman