2015-12-18 4 views
1

Когда запись вставлена ​​в general, я хочу, чтобы regno был скопирован в conf_regno в conf.mysql trigger insert field в отдельной таблице

Я планирую сделать это с помощью триггера AFTER INSERT, но я не могу заставить его работать. Мой хозяин работает MySQL V 5.5

Это мой триггер - какие ошибки в PhpMyAdmin:

DELIMITER $$ 
DROP TRIGGER IF EXISTS sharonb9_titles.ins_regno; 
CREATE TRIGGER ins_regno AFTER INSERT ON general 
    FOR EACH ROW 
    BEGIN 
    INSERT INTO conf(conf_regno) VALUES(NEW.regno); 
    END; 
$$ 
DELIMITER; 

Таблицы:

CREATE TABLE general (
id INT(4) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
regno VARCHAR(20) NOT NULL, 
owner VARCHAR(50) NOT NULL, 
dog VARCHAR(50) NOT NULL); 

CREATE TABLE conf (
id INT(4) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
conf_regno VARCHAR(20) NOT NULL, 
conf_CH_Y VARCHAR(4) NOT NULL DEFAULT 'xxxx', 
conf_CH_V INT(2) UNSIGNED NOT NULL DEFAULT 0, 
conf_GCH_Y VARCHAR(4) NOT NULL DEFAULT 'xxxx', 
conf_SN_Y VARCHAR(4) NOT NULL DEFAULT 'xxxx', 
conf_SN_V INT(2) UNSIGNED NOT NULL DEFAULT 0); 

Может кто-нибудь помочь?

+1

сообщение об ошибке ?? – Uueerdo

+0

Я скажу, но, может быть, это поможет вам изменить (NEW.regno) на (ROW.regno), я думаю :) –

+0

Попробуйте взять ';' от 'END;'? Кроме того, ваш 'DROP TRIGGER' должен быть до' DELIMITER $$'. – Uueerdo

ответ

1

Вы устанавливаете разделитель на $$, но затем выполняете команду DROP TRIGGER с ; в конце.

Во всяком случае, только один заявление вы можете пропустить все DELIMITER и BEGIN/END вещи в любом случае:

CREATE TRIGGER ins_regno AFTER INSERT ON general 
    FOR EACH ROW INSERT INTO conf(conf_regno) VALUES(NEW.regno); 

http://sqlfiddle.com/#!9/4c77ee/1

+0

Изменено имя таблицы и используется код miken32.Спасибо miken32 - работал как шарм. – sharonbetts