SQL错误代码:1364字段'CustomerNumber'没有默认值

时间:2018-03-06 15:23:07

标签: mysql sql error-handling

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;

1 个答案:

答案 0 :(得分:1)

您可以连接包含数据的表,并为INSERT INTO语句提供一个完整的行。由于列的限制,您不能执行两次单独的插入。

INSERT INTO ENROLLMENT(CourseNumber, CustomerNumber, AmountPaid)
  SELECT COURSE.CourseNumber, CUSTOMER.CustomerNumber, 600.00
  FROM COURSE
  LEFT JOIN CUSTOMER on CUSTOMER.CustomerLastName='Johnson'
  WHERE COURSE.Course = 'Statistics' LIMIT 1;

对我来说,这会尖叫“哦,但如果两个顾客姓氏相同会怎么样”,这将是一个问题。