我想要的是简单的东西。在搜索网络一段时间后,我找不到我想要的东西。给出下面的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 ;
我的目标是使用meal_plans表中的外键为每个新帐户创建默认膳食计划的触发器,但是我不知道如何处理触发的INSERT语句的变量触发。可以做的是在插入后获取帐户表中最后一行的id并使用它,但我认为这是有风险的。任何意见将不胜感激。
答案 0 :(得分:0)
在触发器中,您应该能够使用NEW.account_id
来引用触发触发器的新行上的account_id。
参考https://dev.mysql.com/doc/refman/5.7/en/trigger-syntax.html
(请注意,您的触发器定义为" ON食谱"不是" ON帐户",我认为这是一个错误,虽然它没有改变这个答案。)