我目前有 2 个表
-
用户
- user_id
- 用户名
- 密码
- 电子邮件
-
钱包
- 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
表中的外键。