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

kuuvgm7e  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(466)

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

hpcdzsge

hpcdzsge1#

在触发器中,您应该能够使用 NEW.account_id 引用导致触发的新行上的帐户\u id。
参考https://dev.mysql.com/doc/refman/5.7/en/trigger-syntax.html
(请注意,触发器的定义是“按配方”而不是“按帐户”,我认为这是一个错误,尽管它不会改变这个答案。)

相关问题