外键插入错误SQL Developer

时间:2016-02-26 04:28:29

标签: sql oracle foreign-keys sql-insert

我尝试过以多种方式应用外键,但在向表中插入一行时遇到同样的错误:

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)
);

这些都运行良好并创建表没有问题,但是,插入上面的行时我一直收到此错误:

  

错误报告 -
  SQL错误:ORA-01722:无效的数字
  01722. 00000 - "无效的号码"
  *原因:指定的号码无效   *操作:指定有效数字。

造成这种情况的原因是什么?

1 个答案:

答案 0 :(得分:1)

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