【发布时间】:2018-08-14 12:22:33
【问题描述】:
CREATE TABLE CUSTOMER(
CustomerNumber int NOT NULL PRIMARY KEY,
CustomerFirstName char(30) NOT NULL,
CustomerLastName char(30) NOT NULL,
Phone char(12) NOT NULL
);
CREATE TABLE ENROLLMENT(
CourseNumber int NOT NULL,
CustomerNumber int NOT NULL,
AmountPaid float(2) NOT NULL,
CONSTRAINT pk_ENROLLMENT PRIMARY KEY (CustomerNumber, CourseNumber),
CONSTRAINT ENROLLMENTS_fk FOREIGN KEY (CustomerNumber)
REFERENCES CUSTOMER(CustomerNumber),
CONSTRAINT fk_ENROLLMENT FOREIGN KEY (CourseNumber)
REFERENCES COURSE(CourseNumber)
ON DELETE CASCADE ON UPDATE CASCADE
);
INSERT INTO CUSTOMER(CustomerNumber, CustomerFirstName, CustomerLastName, Phone)
VALUES (992, 'Steve', 'Johnson', '631-998-2244');
INSERT INTO CUSTOMER(CustomerNumber, CustomerFirstName, CustomerLastName, Phone)
VALUES (998, 'Jane', 'Lovegood', '516-777-0033');
INSERT INTO CUSTOMER(CustomerNumber, CustomerFirstName, CustomerLastName, Phone)
VALUES (987, 'John', 'Lovegood', '516-777-2888');
INSERT INTO ENROLLMENT(CourseNumber)
SELECT CourseNumber
FROM COURSE
WHERE Course = 'Statistics' LIMIT 1;
INSERT INTO ENROLLMENT(CustomerNumber, AmountPaid)
SELECT CustomerNumber, 600.00
FROM CUSTOMER
WHERE CustomerLastName = 'Johnson' LIMIT 1;
【问题讨论】:
-
看起来问题可能出在添加注册的部分。您添加仅包含 coursenumber 的行,然后添加仅包含 customernumber 和 amountpaid 的另一行。这些数据可能都应该放在同一行。
-
ENROLLMENT的结构是什么?
-
@JacobH
CREATE TABLE ENROLLMENT( CourseNumber int NOT NULL, CustomerNumber int NOT NULL, AmountPaid float(2) NOT NULL, CONSTRAINT pk_ENROLLMENT PRIMARY KEY (CustomerNumber, CourseNumber), CONSTRAINT ENROLLMENTS_fk FOREIGN KEY (CustomerNumber) REFERENCES CUSTOMER(CustomerNumber), CONSTRAINT fk_ENROLLMENT FOREIGN KEY (CourseNumber) REFERENCES COURSE(CourseNumber) ON DELETE CASCADE ON UPDATE CASCADE ); -
错误信息很清楚。您的 INSERT 没有为 CustomerNumber 列指定任何值,并且该列不是 NULL 并且没有默认值。
-
@jarlh 添加默认值不起作用
标签: mysql sql error-handling