所以我创建了我的lil DB,然后使用了这个东西。我添加了两个表,现在我想做的就是这样:当用户插入USERS表时,还将一些默认信息插入到USER_ACCOUNT表中,该表对应于新插入的用户。显然,我做错了什么,但我不知道是什么......提前谢谢。 =)
CREATE DATABASE REST_PROJECT;
USE REST_PROJECT;
CREATE TABLE USERS (
UserID INT Primary Key AUTO_INCREMENT NOT NULL,
UserEmail VARCHAR(30),
UserPassword VARCHAR(30)
);
CREATE TABLE USER_ACCOUNT (
UserAccountID INT Primary Key AUTO_INCREMENT NOT NULL,
OwnerUserID INT,
UserAccountName VARCHAR(30),
UserAccountType VARCHAR(10) NOT NULL,
UserAccountBalence INT,
FOREIGN KEY (OwnerUserID) REFERENCES USERS(UserID)
);
DELIMITER //
CREATE TRIGGER makeDefaultUserAccount
AFTER INSERT ON USERS
For each row
BEGIN
INSERT INTO USER_ACCOUNT
(UserAccountName, UserAccountType, UserAccountBalence)
values ('Default Account','default', 100);
END; //
答案 0 :(得分:3)
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 ;
备注强>
datatype
的{{1}}中的更改,是的,如果您希望系统内的primary keys
缩放数据是适合您的large
< / LI>
initial setup
部分foreign key
部分的更改也应符合USER_ACCOUNT
的相关密钥,并且还应reference table's column
进行任何更改cascade
更改为UserAccountBalence
,将UserAccountBalance
更改为将保存在上述列中的datatype
currency value
表格中的UserEmail
列,已从USERS
更改为50
,您需要为应用程序提供一些呼吸空间30
突然失败validation
key
答案 1 :(得分:0)
如果没有看到错误消息,我只是在猜测,但我怀疑你不满足于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_ACCOUNT.OwnerUserID
设置为刚刚插入的USERS.UserID
的值。