我目前有2张桌子
用户
钱包
现在,当我将用户插入用户表时,我还想自动为此用户创建一个钱包。
我认为使用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 Workbench)
答案 0 :(得分:1)
这是触发器的相关代码。
CREATE TRIGGER new_user_added
AFTER INSERT ON Users
FOR EACH ROW
INSERT INTO Wallets (user_id, credit)
VALUES (NEW.user_id, 0.0);
点击 Run 按钮,查看代码如何在Users
表中插入2行,然后触发器将2个新的user_id
与{{1}添加在一起}归入0
表中。
Wallets
就像其他人在注释中建议的那样,如果您要为每个用户创建1个钱包,则应使用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
表中的外键。