我正在做一个tweeter项目,我在数据库方面遇到了麻烦。我创建了下一个表来管理twets。其中一个属性是“isRetweet”,它将存储转发的推文的id。另一个是retNum,它将存储转发推文的时间。
create table tweets(
tweetId int auto_increment,
userId int not null,
tweetText varchar(140) not null,
createDate TIMESTAMP DEFAULT current_timestamp,
retNum int DEFAULT 0,
loveNum int DEFAULT 0,
commNum int DEFAULT 0,
isRetweet int DEFAULT -1,
PRIMARY key (tweetId),
foreign key (userId) references users(userId)
);
这是我的问题。
我创建了一个TRIGGER,负责在tweets表中插入新推文后更新retNum。因此,如果isRetweet id与-1不同,并且有一条带有此id的推文,我想用+1更新其retNum。
我创建了这个触发器来实现它。
/*Retweet TRIGGER*/
DROP TRIGGER IF EXISTS addRetwet;\\
CREATE TRIGGER addRetweet AFTER INSERT ON tweets
FOR EACH ROW
BEGIN
UPDATE tweets SET retNum = retNum + 1 WHERE tweetId = New.isRetweet;
END;\\
当我尝试插入新推文时出现问题。它给出了下一个错误:
Can't update table 'tweets' in stored function/trigger because it is already used by statement which invoked this stored function/trigger
你知道为什么它会给我这个错误吗?我该如何解决呢?
谢谢你。