Mysql 完全是幸福问题
所以我创建了我的lil数据库,然后使用它。我添加了两个表,现在我想做的就是:当一个用户被插入到USERS表中时,还要将一些默认信息插入到user\u ACCOUNT表中,该表对应于新插入的用户。很明显我做错了什么,但我不知道。。。提前感谢。=)Mysql 完全是幸福问题,mysql,database,triggers,sql-insert,cascade,Mysql,Database,Triggers,Sql Insert,Cascade,所以我创建了我的lil数据库,然后使用它。我添加了两个表,现在我想做的就是:当一个用户被插入到USERS表中时,还要将一些默认信息插入到user\u ACCOUNT表中,该表对应于新插入的用户。很明显我做错了什么,但我不知道。。。提前感谢。=) 在没有看到错误消息的情况下,我只是在猜测,但我怀疑您没有满足FK约束这一事实是罪魁祸首。你的触发代码应该是 DELIMITER // CREATE TRIGGER makeDefaultUserAccount AFTER INSERT ON
在没有看到错误消息的情况下,我只是在猜测,但我怀疑您没有满足FK约束这一事实是罪魁祸首。你的触发代码应该是
DELIMITER //
CREATE TRIGGER makeDefaultUserAccount
AFTER INSERT ON USERS
For each row
BEGIN
INSERT INTO USER_ACCOUNT
(OwnerUserID, UserAccountName, UserAccountType, UserAccountBalence)
values (NEW.UserID, 'Default Account','default', 100);
END; //
DELIMITER ;
它将USER\u ACCOUNT.OwnerUserID
设置为刚刚插入的USERS.UserID
的值
CREATE DATABASE REST_PROJECT;
USE REST_PROJECT;
CREATE TABLE `USERS` (
UserID BIGINT(20) UNSIGNED PRIMARY KEY AUTO_INCREMENT NOT NULL,
UserEmail VARCHAR(50),
UserPassword VARCHAR(30)
);
CREATE TABLE `USER_ACCOUNT` (
UserAccountID BIGINT(20) UNSIGNED PRIMARY KEY AUTO_INCREMENT NOT NULL,
UserID BIGINT(20) UNSIGNED NOT NULL,
UserAccountName VARCHAR(30),
UserAccountType VARCHAR(10) NOT NULL,
UserAccountBalance DECIMAL(19,6),
CONSTRAINT `fk_USER_ACCOUNT_UserID` FOREIGN KEY (`UserID`)
REFERENCES `USERS`.`UserID` (`UserID`)
ON DELETE CASCADE
ON UPDATE CASCADE
);
DELIMITER //CREATE TRIGGER `makeDefaultUserAccount`
AFTER INSERT ON `USERS`
FOR EACH ROW BEGIN
INSERT INTO USER_ACCOUNT (OwnerUserID, UserAccountName, UserAccountType, UserAccountBalance)
VALUES (NEW.UserID, 'Default Account','default', 100);
END//
DELIMITER ;
注释
- 请注意
主键的
中的更改,是的,如果您希望系统中的数据类型
大规模数据将是适合您的
初始设置
- 您的
表的用户帐户
部分的更改也应符合外键
的相关键,并且对于任何更改也应参考表列
级联
- 将
更改为UserAccountBalance
,以及UserAccountBalance
,以适应将保存在所述列中的数据类型
货币值
- 关于
表中的USERS
列,从UserEmail
更改为30
,您需要给应用程序一些喘息的空间,以防验证突然失败50
- 更新了触发区域,以保存将在
外键中使用的
键
USER\u ACCOUNT
语句做了一个小小的更改:不是引用USERS
UserID
(UserID
)而是引用USERS
),一切都正常了。
CREATE DATABASE REST_PROJECT;
USE REST_PROJECT;
CREATE TABLE `USERS` (
UserID BIGINT(20) UNSIGNED PRIMARY KEY AUTO_INCREMENT NOT NULL,
UserEmail VARCHAR(50),
UserPassword VARCHAR(30)
);
CREATE TABLE `USER_ACCOUNT` (
UserAccountID BIGINT(20) UNSIGNED PRIMARY KEY AUTO_INCREMENT NOT NULL,
UserID BIGINT(20) UNSIGNED NOT NULL,
UserAccountName VARCHAR(30),
UserAccountType VARCHAR(10) NOT NULL,
UserAccountBalance DECIMAL(19,6),
CONSTRAINT `fk_USER_ACCOUNT_UserID` FOREIGN KEY (`UserID`)
REFERENCES `USERS`.`UserID` (`UserID`)
ON DELETE CASCADE
ON UPDATE CASCADE
);
DELIMITER //CREATE TRIGGER `makeDefaultUserAccount`
AFTER INSERT ON `USERS`
FOR EACH ROW BEGIN
INSERT INTO USER_ACCOUNT (OwnerUserID, UserAccountName, UserAccountType, UserAccountBalance)
VALUES (NEW.UserID, 'Default Account','default', 100);
END//
DELIMITER ;