2016-02-26 65 views
0

我已经尝试了应用在很多方面外键,而是插入一行到我的表,该表时,我收到了同样的错误:外键插入错误的SQL开发

INSERT INTO MEDICINE 
VALUES (50, 'PREDNISONE', '8 BOTTLES', 'N', 
     TO_DATE('12-MAR-2019','DD-MON-YYYY'), 
     TO_DATE('09-JAN-2016','DD-MON-YYYY'), 2); 

我已经创建了我的表很多:

CREATE TABLE MEDICINE 
(
    M_ID NUMBER PRIMARY KEY, 
    M_NAME VARCHAR2(50), 
    QUANTITY NUMBER, 
    OTC VARCHAR2(1), 
    EXPR DATE, 
    LAST_AUDIT DATE, 
    PT_ID NUMBER, 

    CONSTRAINT fk_MED FOREIGN KEY (PT_ID) 
    REFERENCES PHARM_TECH(PT_ID) 
); 

我也试过:

CREATE TABLE MEDICINE 
(
    M_ID NUMBER PRIMARY KEY, 
    M_NAME VARCHAR2(50), 
    QUANTITY NUMBER, 
    OTC VARCHAR2(1), 
    EXPR DATE, 
    LAST_AUDIT DATE, 
    PT_ID NUMBER 
); 

ALTER TABLE MEDICINE 
ADD FOREIGN KEY (PT_ID) 
REFERENCES PHARM_TECH(PT_ID); 

我也尝试:

CREATE TABLE MEDICINE 
(
    M_ID NUMBER PRIMARY KEY, 
    M_NAME VARCHAR2(50), 
    QUANTITY NUMBER, 
    OTC VARCHAR2(1), 
    EXPR DATE, 
    LAST_AUDIT DATE, 
    PT_ID NUMBER REFERENCES PHARM_TECH(PT_ID) 
); 

这些都运行正常,并创建表没有问题,但是,插入行上面时,我不断收到此错误:

Error report -
SQL Error: ORA-01722: invalid number
01722. 00000 - "invalid number"
*Cause: The specified number was invalid.
*Action: Specify a valid number.

是什么造成的?

+0

该错误与外键无关。 '8 BOTTLES'根本不是一个数字(这是'quantity'列的数据类型) –

回答

1

您不能将值'8 BOTTLES'插入列QUANTITY中。数据类型是Number not varchar。尝试8或尝试更改列的数据类型数量为varchar2