我需要在 mySQL 中創建一個觸發器,該觸發器使用自動遞增的 id 來填充另一列。假設 id 是“12”,我需要另一列自動填充“12-xxx”。我正在嘗試使用插入前觸發器來做到這一點,但它不起作用。
CREATE TRIGGER TR_CARTAO_BI BEFORE INSERT ON CARTAO FOR EACH ROW
BEGIN
SET NEW.NUMERO = CONCAT(NEW.IDCARTAO, '-XXX');
END $$
- 看來我不能在前插入觸發器中使用id,因為它還沒有生成;
- 我聽說過查詢“SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA.TABLES...”,它回傳下一個自動增量元素,但有時有效,有時無效;
- 我嘗試使用后插入觸發器,但顯然您無法更改要在后插入觸發器中插入的行;
uj5u.com熱心網友回復:
從您的問題來看,您似乎已經用盡了所有可能的路線(我最初會建議 SELECT AUTO_INCREMENT 查詢,但這對您來說并不可靠),以避免使用輔助表。
因此,作為一個 hacky 解決方法,您可以嘗試這樣做......您可以使用 AFTER INSERT 觸發器在輔助表中創建一行,該行將具有您剛剛創建的行的 ID 和您的輔助列ID-XXX 值。在輔助表上,設定 AFTER INSERT 觸發器以使用 ID-XXX 值更新主表行。
這可能會很昂貴,具體取決于您的用例和交易速度等。但我想我會提供橫向思考......
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/529577.html
標籤:mysql触发器自动递增
