如何创建MySQL触发器,以便在插入或更新后使用来自另一个表中字段的数据更新表的总和
我有以下代码:如何创建MySQL触发器,以便在插入或更新后使用来自另一个表中字段的数据更新表的总和,mysql,sql-server,Mysql,Sql Server,我有以下代码: CREATE TRIGGER INSERT_TO_VOTE_UPDATE_SUM_VOTES ON Voting AFTER UPDATE, INSERT AS BEGIN DECLARE @VOTING_PARTY_ID INT, @SUM_VOTES INT SELECT @VOTING_PARTY_ID = PoliticalPartyID FROM INSERTED SELECT @SUM_VOTES = SUM(Votes) FROM Voting WHERE Po
CREATE TRIGGER INSERT_TO_VOTE_UPDATE_SUM_VOTES ON Voting
AFTER UPDATE, INSERT
AS
BEGIN
DECLARE @VOTING_PARTY_ID INT, @SUM_VOTES INT
SELECT @VOTING_PARTY_ID = PoliticalPartyID FROM INSERTED
SELECT @SUM_VOTES = SUM(Votes) FROM Voting WHERE PoliticalPartyID =
@VOTING_PARTY_ID
UPDATE PoliticalParties SET Total=@SUM_VOTES WHERE PoliticalPartyID =
@VOTING_PARTY_ID
END
在SQL Server上,我喜欢在MySQL数据库上创建相同的触发器,我似乎无法正确声明变量,也无法在新表或旧表中找到正确的字段 我的尝试是:
CREATE TRIGGER INSERT_TO_VOTE_UPDATE_SUM_VOTES
AFTER INSERT
ON Voting
FOR EACH ROW
BEGIN
DECLARE VOTING_PARTY_ID INT, @SUM_VOTES INT
SELECT @VOTING_PARTY_ID = PoliticalPartyID FROM NEW
SELECT @SUM_VOTES = SUM(Votes) FROM Voting WHERE PoliticalPartyID =
@VOTING_PARTY_ID
UPDATE PoliticalParties SET Total=@SUM_VOTES WHERE PoliticalPartyID =
@VOTING_PARTY_ID
END
[42000][1064] You have an error in your SQL syntax; check the manual that
corresponds to your MariaDB server version for the right syntax to use near
' @SUM_VOTES INT SELECT @VOTING_PARTY_ID = PoliticalPartyID FROM NEW
SELECT' at line 8
1您不需要从“新建”中选择,您可以访问“新建”中的所有字段,如下所示: NEW.field\u名称 2您可以在DECLARE变量中进行选择 试试这个:
CREATE TRIGGER INSERT_TO_VOTE_UPDATE_SUM_VOTES
AFTER INSERT
ON Voting
FOR EACH ROW
BEGIN
DECLARE SUM_VOTES INT;
SELECT SUM(Votes) FROM Voting
WHERE PoliticalPartyID = NEW.PoliticalPartyID
INTO SUM_VOTES;
UPDATE PoliticalParties SET Total = SUM_VOTES WHERE PoliticalPartyID =
NEW.PoliticalPartyID
END
你的帖子不清楚,你是想在SQL Server还是MySQL上运行它?它们是完全不同的产品。我试图获得与上述代码相同的结果,这些代码在MySQL数据库上的SQL Server上运行良好@Larnu他当前的代码是SQL Server MSSQL。。MySQL不支持更新后,在MySQL中插入您需要进行分离的更新和插入触发器。我尝试将它们分离,但收到错误消息关于没有正确的语法。syntaxi似乎无法正确声明变量或在新表或旧表上找到正确的字段我尝试将它们分离,但收到错误消息关于没有正确的语法显示您的MySQL尝试代码和错误消息?获取以下错误:[42000][1064]您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,了解在第9行“从投票中选择SUMVotes,其中PoliticalPartyID=NEW.PoliticalPartyI”附近使用的正确语法修复了上述代码,我们需要添加一个“;”宣布总票数;最后更新政治党派集合总数=总票数,其中政治党派ID=新。投票党派ID必须是:更新政治党派集合总数=总票数,其中政治党派ID=政治党派ID非常感谢您的解决方案谢谢您的回复,我按照您所说的更新了代码。谢谢你的投票: