我想要的是简单的东西。在网上搜索了一段时间后,我找不到我想要的东西。给定以下sql:
CREATE TABLE accounts (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(50) DEFAULT NULL,
PRIMARY KEY (id)
);
CREATE TABLE meal_plans (
planid int(11) NOT NULL AUTO_INCREMENT,
planname varchar(255) DEFAULT 'Default',
account_id int(11) NOT NULL,
created_date date DEFAULT GETDATE(),
UNIQUE (planname, account_id),
FOREIGN KEY (account_id) REFERENCES accounts (aid),
PRIMARY KEY(planid)
);
DELIMITER //
CREATE TRIGGER addDefaultPlans
ON accounts
AFTER INSERT
AS
BEGIN
INSERT INTO meal_plans (account_id) VALUES (@thenewaccount);
END //
DELIMITER ;
我想要的是一个触发器,它应该使用dine\u plans表中的外键为每个新帐户创建一个默认的用餐计划,但是我不知道如何处理触发触发器的insert语句的变量。可以做的是在insert之后获取accounts表中最后一行的id并使用它,但是我认为这是有风险的。如有任何意见,将不胜感激。
1条答案
按热度按时间hpcdzsge1#
在触发器中,您应该能够使用
NEW.account_id
引用导致触发的新行上的帐户\u id。参考https://dev.mysql.com/doc/refman/5.7/en/trigger-syntax.html
(请注意,触发器的定义是“按配方”而不是“按帐户”,我认为这是一个错误,尽管它不会改变这个答案。)