我似乎無法在我的代碼上發現任何錯誤來觸發。 (我通常代碼中使用甲骨文,但我轉換爲我在這個項目中的SQL,檢查了所有的功能和轉換那些不提供MySQL的話)MYSQL觸發錯誤(很多功能)
下面的代碼:
CREATE TRIGGER `transaction_before_insert` BEFORE INSERT ON `transaction` FOR EACH ROW BEGIN
DECLARE TEMPKODE VARCHAR(12);
DECLARE TEMP VARCHAR(5);
TEMP:= CONCAT('T',DATE_FORMAT(NOW(),'%Y'));
SELECT CONCAT(TEMP, LPAD(NVL(MAX(CAST(SUBSTR(TRANSACTION_ID,5,5) AS UNSIGNED))+1,1),5,0))
FROM TRANSACTION INTO TEMPKODE
WHERE SUBSTR(TRANSACTION_ID,1,4) = TEMP;
NEW.TRANSACTION_ID := TEMPKODE;
END
編輯1:
我是來自heidisql編碼,如果有任何代碼的區別,因爲我聽說如果我去做了MySQL的工作臺上,我應該使用
設置變量
,而不是直接
個 變量:=
期望的結果是外匯:T201600001
// T代表交易年,2016年我是從日期格式,其餘的是從數據庫中
它的生產計劃軟件選擇的最大數據所以我正在交易代碼
向我們展示了整個觸發聲明,請。你可能已經搞砸了棘手的MySQL'SET DELIMITER'黑客。也請顯示你遇到的錯誤。 –
哦對不起,因爲我認爲整個觸發器只是創建或替換觸發器等 –
這裏是整個代碼CREATE TRIGGER'transaction_before_insert'在插入事務之前每個行開始 \t DECLARE TEMPKODE VARCHAR(12); \t DECLARE TEMP VARCHAR(5); TEMP:= CONCAT('T',DATE_FORMAT(NOW(),'%Y')); \t SELECT CONCAT(TEMP,LPAD(NVL(MAX(CAST(SUBSTR(TRANSACTION_ID,5,5)爲無符號))+ 1,1),5,0)) \t FROM TRANSACTION INTO TEMPKODE \t WHERE SUBSTR(TRANSACTION_ID ,1,4)= TEMP; \t NEW.TRANSACTION_ID:= TEMPKODE; END @ ollie-jones –