概述
业务如下:在博客系统中,有一个文章表article,和一个文章评论表artComment,以及一个评论日志表artComment_log,这三张表的表结构如下:CREATETABLEarticle(aidINTPRIMARYKEYAUTO_INC...
业务如下:
在博客系统中,有一个文章表article,和一个文章评论表artComment,以及一个评论日志表artComment_log,这三张表的表结构如下:
CREATE TABLE article(
aid INT PRIMARY KEY AUTO_INCREMENT,
atitle VARCHAR(50) NOT NULL,
acontent TEXT NOT NULL,
apubtime DATETIME NOT NULL,
alastmodifiedtime DATETIME NOT NULL,--最后修改时间
aaccesstime INT DEFAULT 0 NOT NULL,--访问次数
acommentnum INT DEFAULT 0 NOT NULL,--评论数量
aprivilege TINYINT NOT NULL,--访问权限
astate TINYINT NOT NULL,
uid INT NOT NULL,--用户ID
tid INT NOT NULL,--文章类型ID
FOREIGN KEY (uid) REFERENCES user(uid)
ON DELETE NO ACTION
ON UPDATE CASCADE,
FOREIGN KEY (tid) REFERENCES type(tid)
ON DELETE NO ACTION
ON UPDATE CASCADE
)ENGINE=INNODB
;
CREATE TABLE artComment(
cid INT PRIMARY KEY AUTO_INCREMENT,
ccontent VARCHAR(100) NOT NULL,
cpubtime DATETIME NOT NULL,
cstate TINYINT NOT NULL,
aid INT NOT NULL,--文章ID
uid INT NOT NULL,--用户ID
FOREIGN KEY (uid) REFERENCES user(uid)
ON DELETE NO ACTION
ON UPDATE CASCADE,
FOREIGN KEY (aid) REFERENCES article(aid)
ON DELETE NO ACTION
ON UPDATE CASCADE
)ENGINE=INNODB
;
CREATE TABLE artComment_log(
cid INT REFERENCES artComment(aid),
aid INT REFERENCES artComment(uid),
opertype VARCHAR(10) NOT NULL,--操作类型
operdate DATETIME NOT NULL --操作时间
)ENGINE=INNODB
;
现在我希望在向评论表中添加评论的同时,向artComment_log表中插入记录,并同时令文章表中的评论数量这个字段的值加1,于是我这样写了一个触发器:
CREATE TRIGGER insert_artComment
AFTER INSERT ON artComment
FOR EACH ROW
AS BEGIN
INSERT INTO artComment_log VALUES(
new.cid, new.aid, 'insert', CURRENT_TIMESTAMP
);
UPDATE article
SET acommentnum = acommentnum+1
WHERE aid = new.aid;
END;
但是这样写数据库会报错,呜呜。。。
我刚开始学触发器,不太会写,请高手指点!!
谢谢!!!
展开
最后
以上就是可靠蛋挞为你收集整理的mysql中如何写触发器_请教mysql中触发器的写法的全部内容,希望文章能够帮你解决mysql中如何写触发器_请教mysql中触发器的写法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复