插入后,MySQL会自动将数据插入到其他表中



我目前有 2 个表

  1. 用户

    • user_id
    • 用户名
    • 密码
    • 电子邮件
  2. 钱包

    • wallet_id
    • user_id
    • 信用

现在,当我将用户插入用户表时,我还想自动为该用户创建一个钱包。 我认为这可以通过 MySQL 中的触发事件来实现AFTER INSERT

CREATE DEFINER = CURRENT_USER TRIGGER `pay`.`user_AFTER_INSERT` AFTER INSERT ON `user` FOR EACH ROW
BEGIN
INSERT INTO wallets (wallet_id, credit)
VALUES (current_user(user_id), 0); 
)
END

我该怎么做?(我使用MySQL工作台(

下面是触发器的相关代码。

CREATE TRIGGER new_user_added 
AFTER INSERT ON Users
FOR EACH ROW 
INSERT INTO Wallets (user_id, credit)
VALUES (NEW.user_id, 0.0);

这是完整的工作代码。 https://paiza.io/projects/FIpYIdpxg660G7gutjh-mA?language=mysql

单击">运行">按钮,查看代码如何在Users表中插入 2 行,然后触发器将带有0信用的 2 个新user_id添加到Wallets表中。

CREATE TABLE `Users` (
user_id varchar(50) NOT NULL,
user_name varchar(50) NOT NULL,
user_password varchar(50) NOT NULL,
email varchar(100) NOT NULL,
PRIMARY KEY (`user_id`)
);
CREATE TABLE `Wallets` (
user_id varchar(50) NOT NULL,
credit decimal(10,2) NULL,
PRIMARY KEY (`user_id`)
);
CREATE TRIGGER new_usert_added 
AFTER INSERT ON Users
FOR EACH ROW 
INSERT INTO Wallets (user_id, credit)
VALUES (NEW.user_id, 0.0);
INSERT INTO Users (user_id, user_name, user_password, email) 
VALUES ('A0001', 'John', 'sdg42fbg','john@doe.com');
INSERT INTO Users (user_id, user_name, user_password, email) 
VALUES ('A0002', 'Jane', 'Gh5sd46bW','jane@doe.com');
SELECT * FROM Users;
SELECT * FROM Wallets;

就像其他人在评论中建议的那样,如果您为每个用户创建 1 个钱包,您应该使用该user_id作为Wallets表中的外键。

最新更新