2016-11-30 4 views
0

db kroenke 서적에서 연습하고 있습니다.MSSQL 삽입이 작동하지 않습니다.

INSERT INTO PRODUCT_SALES VALUES(41197, 3, 'VK001', 1, 14.95, 14.95); 

은 다음 표에서 작동하지 않습니다 :

CREATE TABLE PRODUCT_SALES(
     TimeID   Int     NOT NULL, 
     CustomerID  Int     NOT NULL, 
     ProductNumber Char(35)   NOT NULL, 
     Quantity  Int     NOT NULL, 
     UnitPrice  Numeric(9,2)  NOT NULL, 
     Total   Numeric(9,2)  NULL, 
     CONSTRAINT  SALES_PK 
     PRIMARY KEY  (TimeID, CustomerID, ProductNumber), 
     CONSTRAINT  PS_TIMELINE_FK FOREIGN KEY(TimeID) 
           REFERENCES TIMELINE(TimeID) 
             ON UPDATE NO ACTION 
             ON DELETE NO ACTION, 
     CONSTRAINT  PS_CUSTOMER_FK FOREIGN KEY(CustomerID) 
           REFERENCES CUSTOMER(CustomerID) 
             ON UPDATE NO ACTION 
             ON DELETE NO ACTION, 
     CONSTRAINT  PS_PRODUCT_FK FOREIGN KEY(ProductNumber) 
           REFERENCES PRODUCT(ProductNumber) 
             ON UPDATE NO ACTION 
             ON DELETE NO ACTION 
     ); 

형식은 잘 보이지만,이 오류 받고 :

Column name or number of supplied values does not match table definition. 

감사합니다!이 삽입 왜 누구나 볼 수 있습니다 The Query seems to work fine

+2

(1) 당사'ProductNUMBER'라는 열이 문자열이 될 것이다 사용해 볼 수 있습니까? (2) 왜 VARCHAR()이 아닌'CHAR()'일까요? –

+0

나는 (모든 제약 조건을 제거하고) 삽입 할 수 있었고 오류 메시지가 나타나지 않아야한다. – TheGameiswar

+0

'제공된 값의 열 이름 또는 개수가 테이블 정의와 일치하지 않습니다.'라는 오류 메시지가 표시됩니다. sql을 확인하십시오. – Serg

답변

1

Insert 문에서 열 이름을 사용 했으므로 작동했습니다.

CREATE TABLE TIMELINE (TimeID INT NOT NULL PRIMARY KEY) 
GO 
CREATE TABLE CUSTOMER (CUSTOMERID INT NOT NULL PRIMARY KEY) 
GO 
CREATE TABLE PRODUCT(ProductNumber Char(35) NOT NULL PRIMARY KEY) 
GO 

INSERT INTO TIMELINE VALUES (41197) 
INSERT INTO CUSTOMER VALUES (3) 
INSERT INTO PRODUCT VALUES ('VK001') 
GO 

CREATE TABLE PRODUCT_SALES(
     TimeID   Int     NOT NULL, 
     CustomerID  Int     NOT NULL, 
     ProductNumber Char(35)   NOT NULL, 
     Quantity  Int     NOT NULL, 
     UnitPrice  Numeric(9,2)  NOT NULL, 
     Total   Numeric(9,2)  NULL, 
     CONSTRAINT  SALES_PK 
     PRIMARY KEY  (TimeID, CustomerID, ProductNumber), 
     CONSTRAINT  PS_TIMELINE_FK FOREIGN KEY(TimeID) 
           REFERENCES TIMELINE(TimeID) 
             ON UPDATE NO ACTION 
             ON DELETE NO ACTION, 
     CONSTRAINT  PS_CUSTOMER_FK FOREIGN KEY(CustomerID) 
           REFERENCES CUSTOMER(CustomerID) 
             ON UPDATE NO ACTION 
             ON DELETE NO ACTION, 
     CONSTRAINT  PS_PRODUCT_FK FOREIGN KEY(ProductNumber) 
           REFERENCES PRODUCT(ProductNumber) 
             ON UPDATE NO ACTION 
             ON DELETE NO ACTION 
     ); 
GO 

- insert 문에 열 이름이 추가되어 작동했습니다.

INSERT INTO PRODUCT_SALES (TimeID ,CustomerID, ProductNumber , Quantity, UnitPrice , Total) 
VALUES(41197, 3, 'VK001', 1, 14.95, 14.95); 
0

나는 삽입 쿼리가 잘 작동하는 것 같다 내 MySQL의에서 동일한 쿼리를 시도! 테이블이 바뀌 었습니까?

0

다른 열 또는 열 순서로이 테이블을 전에 만들었습니까?

당신은

DROP TABLE PRODUCT_SALES 
CREATE TABLE PRODUCT_SALES(
    TimeID   Int     NOT NULL, 
    CustomerID  Int     NOT NULL, 
    ProductNumber Char(35)   NOT NULL, 
    Quantity  Int     NOT NULL, 
    UnitPrice  Numeric(9,2)  NOT NULL, 
    Total   Numeric(9,2)  NULL, 
    CONSTRAINT  SALES_PK 
    PRIMARY KEY  (TimeID, CustomerID, ProductNumber), 
    CONSTRAINT  PS_TIMELINE_FK FOREIGN KEY(TimeID) 
          REFERENCES TIMELINE(TimeID) 
            ON UPDATE NO ACTION 
            ON DELETE NO ACTION, 
    CONSTRAINT  PS_CUSTOMER_FK FOREIGN KEY(CustomerID) 
          REFERENCES CUSTOMER(CustomerID) 
            ON UPDATE NO ACTION 
            ON DELETE NO ACTION, 
    CONSTRAINT  PS_PRODUCT_FK FOREIGN KEY(ProductNumber) 
          REFERENCES PRODUCT(ProductNumber) 
            ON UPDATE NO ACTION 
            ON DELETE NO ACTION 
    ); 

INSERT INTO PRODUCT_SALES (TimeID,CustomerID,ProductNumber,Quantity,UnitPrice,Total) 
VALUES(41197, 3, 'VK001', 1, 14.95, 14.95); 
관련 문제