如何解决MySQL的在更新触发器之前如果记录不存在,我可以创建记录吗?
我有一张简单的桌子:
CREATE TABLE `wallets` (
`intWalletID` int(10) unsigned NOT NULL AUTO_INCREMENT,`intAccountID` int(10) unsigned NOT NULL,`doubleSumm` double(16,4) NOT NULL DEFAULT '0.0000',PRIMARY KEY (`intWalletID`),UNIQUE KEY `intAccountID` (`intAccountID`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
用于记录钱包状态的表。要更新它,请使用类似以下的简单查询:
UPDATE wallets SET doubleSumm = doubleSumm + @refill_value WHERE intAccountID = @account_id;
如果记录不存在-没有任何反应(受影响的行:0)。我正在尝试通过“更新触发前”解决问题,但这没有帮助。我的无效触发器:
CREATE DEFINER = debian-sys-maint
@ %
触发create_record
更新之前
在wallets_test
上
每行
开始
DECLARE v_account_wallet_id INT未签名;
SELECT intWalletID,doubleSumm
INTO v_account_wallet_id
从钱包
哪里
intAccountID = NEW.intAccountID;
如果v_account_wallet_id = 0然后
插入wallets_test(intAccountID)值(NEW.intAccountID);
万一;
END;
原则上可行吗?还是我必须检查应用程序中的现有记录?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。