mysql在插入后自动将数据插入到其他表中

n6lpvg4x  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(412)

我现在有两张table
用户
用户id
用户名
密码
电子邮件
钱包
钱包\u id
用户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工作台)
puruo6ea

puruo6ea1#

这是触发器的相关代码。

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

单击run按钮,查看代码是如何在 Users 表和触发器,然后添加2个新的 user_id s与 0 信用进入 Wallets table。

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;

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

相关问题