#mysql #triggers
#mysql #триггеры
Вопрос:
я пытаюсь привыкнуть к триггерам. Я создал небольшую базу данных и триггер. Когда я хочу вставить что-то в категорию ship, это не позволяет мне это сделать.Если я сброшу триггер с тем же сообщением, я смогу вставлять значения в таблицу. Я получаю эту ошибку: #1048 — Столбец ‘IMO’ не может быть нулевым, мой код триггера:
/*ship insert*/
DELIMITER //
CREATE TRIGGER `ship_insert_logs`
AFTER INSERT ON `ship`
FOR EACH ROW
BEGIN
DECLARE ship_IMO INTEGER;
SET ship_IMO=new.IMO;
INSERT INTO ship_logs VALUES (null, concat('A new row is inserted with IMO ', ship_IMO, 'at',
date_format(now(), '%d-%m-%y %h:%i:%s %p')));
END //
DELIMITER ;
и таблица доставки:
CREATE TABLE ship(
department_id INTEGER NOT NULL,
IMO BIGINT PRIMARY KEY NOT NULL,
Latitude DOUBLE PRECISION NOT NULL,
Longitude DOUBLE PRECISION NOT NULL,
current_speed DOUBLE PRECISION NOT NULL,
heading VARCHAR (30),
status VARCHAR(30),
FOREIGN KEY(department_id) REFERENCES department (department_id) ON UPDATE CASCADE
);
в то время как таблица ship_logs:
CREATE TABLE ship_logs(
IMO BIGINT PRIMARY KEY NOT NULL,
audit_description VARCHAR(500)
);
Комментарии:
1. Пожалуйста, добавьте пример вставки для отправки.
2. ВСТАВИТЬ В ЗНАЧЕНИЯ ship(department_id, IMO, широта, Долгота, current_speed, заголовок, статус) (2, 9171448, 1.5915, 104.5291, 0.0, ‘ СИНГАПУР [SG]», «На якоре»);
3. Вы забыли определить
ship_logs.IMO
как AUTO_INCREMENT .4. Что вы имеете в виду?
5. Вставка в триггер устанавливает значение imo равным null — это то, что вы хотели сделать? или вы хотели установить для него значение new.imo? или вы хотели, чтобы это был столбец auto_increment?