我是靠谱客的博主 可靠蛋挞,最近开发中收集的这篇文章主要介绍mysql中如何写触发器_请教mysql中触发器的写法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

业务如下:在博客系统中,有一个文章表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中触发器的写法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部