【问题标题】:Foreign key insertion error SQL Developer外键插入错误 SQL Developer
【发布时间】:2016-02-26 04:28:29
【问题描述】:

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

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 - “无效号码”
*原因:指定的号码无效。
*行动:指定一个有效的数字。

这是什么原因造成的?

【问题讨论】:

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

标签: sql oracle foreign-keys sql-insert


【解决方案1】:

您不能将值“8 BOTTLES”插入到 QUANTITY 列中。数据类型是 Number 而不是 varchar。尝试 8 或尝试将 Quantity 列的数据类型更改为 varchar2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2018-08-24
    • 2012-06-03
    相关资源
    最近更新 更多