我创建了非常简单的triger,我认为syntex也是正确的:
CREATE TRIGGER trig1 after INSERT ON urlcontent for each row
BEGIN
insert into userpost(userid,url,hash) values (userid,url,hash);
END;
给出错误:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3
两个表的结构:
CREATE TABLE urlcontent (
userid text NOT NULL,
url varchar(255) NOT NULL,
`desc` varchar(2048) NOT NULL,
preview varchar(255) NOT NULL,
img_url varchar(128) NOT NULL,
title varchar(128) NOT NULL,
`hash` varchar(128) NOT NULL,
rate varchar(20) DEFAULT NULL,
`time` varchar(64) DEFAULT NULL,
sentiment varchar(32) DEFAULT NULL,
`subject` varchar(64) DEFAULT NULL,
PRIMARY KEY (`hash`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Table structure for table 'userpost'
--
CREATE TABLE userpost (
userid varchar(40) NOT NULL DEFAULT '',
url varchar(255) DEFAULT NULL,
`desc` varchar(2048) DEFAULT NULL,
preview varchar(255) DEFAULT NULL,
img_url varchar(128) DEFAULT NULL,
title varchar(128) DEFAULT NULL,
`hash` varchar(128) NOT NULL DEFAULT '',
rate varchar(16) DEFAULT NULL,
`time` varchar(64) DEFAULT NULL,
pcount varchar(16) DEFAULT NULL,
ncount varchar(16) DEFAULT NULL,
isset varchar(16) DEFAULT NULL,
sentiment varchar(32) DEFAULT NULL,
`subject` varchar(64) DEFAULT NULL,
PRIMARY KEY (userid,`hash`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
hash和url是userpost table /
中的关键两个表的结构
答案 0 :(得分:4)
您的具体错误可能是由于分隔符定义为;
。
如果您将分隔符更改为|
(在查询编辑器下方的框中),如下图所示,它将起作用:
这有助于创建触发器而不会在第一个;
停止查询。
这样可行,但要将urlcontent
中的值插入userpost
,您必须在值之前添加关键字NEW。这告诉触发器您要在userpost
中插入的值是刚插入urlcontent
的值:
CREATE TRIGGER trig1 AFTER INSERT ON urlcontent
FOR EACH ROW
BEGIN
insert into userpost(userid,url,hash) values (NEW.userid,NEW.url,NEW.hash);
END;
|