如何在sql触发器中使用insert语句中的变量

时间:2018-04-16 03:59:14

标签: mysql sql triggers

我想要的是简单的东西。在搜索网络一段时间后,我找不到我想要的东西。给出下面的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并使用它,但我认为这是有风险的。任何意见将不胜感激。

1 个答案:

答案 0 :(得分:0)

在触发器中,您应该能够使用NEW.account_id来引用触发触发器的新行上的account_id。

参考https://dev.mysql.com/doc/refman/5.7/en/trigger-syntax.html

(请注意,您的触发器定义为" ON食谱"不是" ON帐户",我认为这是一个错误,虽然它没有改变这个答案。)