mysql触发器在单独的表中插入字段

时间:2015-12-18 22:39:42

标签: mysql triggers

将记录插入general后,我希望将regno复制到conf_regno中的conf

我计划使用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 个答案:

答案 0 :(得分:1)

您将分隔符设置为$$,但最后在DROP TRIGGER处执行;命令。

无论如何,只有一个声明,您可以跳过所有DELIMITERBEGIN / 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