Я не могу найти ошибку в моем коде, чтобы создать триггер. (Я обычно код с помощью оракула, но я преобразовать в моей 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
EDIT 1:
я кодирование его от HeidiSQL, если есть какая-то разница коды, так как я слышал, если я это сделать на MySQL верстак я должен использовать
SET переменных
вместо непосредственно
переменные: =
желаемый результат форекс: T201600001
// T для сделки, 2016 я получил его от DateFormat, а остальное выбирает самые большие данные из базы данных
это программное обеспечение для планирования производства поэтому я делаю код транзакции
Покажите нам всю декларацию триггера, пожалуйста. Возможно, вы перепутали сложный взлом MySQL 'SET DELIMITER'. Также, пожалуйста, покажите ошибку, которую вы получаете. –
О, извините, так как я думаю, что весь триггер только создает или заменяет триггер и т. Д. –
вот весь код CREATE TRIGGER 'transaction_before_insert' ДО INSERT ON' transaction' ДЛЯ КАЖДОГО ROW BEGIN \t DECLARE TEMPKODE VARCHAR (12); \t DECLARE TEMP VARCHAR (5); \t TEMP: = CONCAT ('T', DATE_FORMAT (NOW(), '% Y')); \t ВЫБОР CONCAT (ТЕМП, LPAD (NVL (МАКС (CAST (SUBSTR (TRANSACTION_ID, 5,5) как беззнаковое)) + 1,1), 5,0)) \t ОТ транзакции на TEMPKODE \t ГДЕ SUBSTR (TRANSACTION_ID , 1,4) = TEMP; \t NEW.TRANSACTION_ID: = TEMPKODE; END @ ollie-jones –