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;

但是这样写数据库会报错,呜呜。。。

我刚开始学触发器,不太会写,请高手指点!!

谢谢!!!

展开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值