使用insert-语句接收无尽错误

时间:2018-11-24 13:55:28

标签: sql database oracle

我正在尝试向客户插入一些值,然后出现ora-00904错误。 在研究了这个问题之后,我没有使用“,而是使用了”。但是现在我收到了ora-00984。

INSERT INTO customer (c_id, name, age)
VALUES (1, 'Carl', 45)
OUTPUT:
SQL-ERROR: ORA-00904: "name": invalid ID
00904. 00000 -  "%s: invalid identifier"

然后我尝试这种方式。

INSERT INTO customer (c_id, name, age)
VALUES (1, "Carl", 45)
OUTPUT:
00984. 00000 -  "column not allowed here"

我的DDL-代码:

CREATE TABLE adress (
adress_id   INTEGER NOT NULL,
state       VARCHAR2(60) NOT NULL,
country     VARCHAR2(60) NOT NULL
);
ALTER TABLE adress ADD CONSTRAINT adress_pk PRIMARY KEY ( adress_id );
CREATE TABLE contract (
con_id   INTEGER NOT NULL,
length   DATE
);
ALTER TABLE contract ADD CONSTRAINT contract_pk PRIMARY KEY ( con_id );
CREATE TABLE customer (
c_id               INTEGER NOT NULL,
name               VARCHAR2(60) NOT NULL,
age                CHAR(2) NOT NULL,
adress_adress_id   INTEGER
);
ALTER TABLE customer ADD CONSTRAINT customer_pk PRIMARY KEY ( c_id );
CREATE TABLE relation_1 (
customer_c_id     INTEGER NOT NULL,
contract_con_id   INTEGER NOT NULL
);
ALTER TABLE relation_1 ADD CONSTRAINT relation_1_pk PRIMARY KEY ( customer_c_id,
                                                              contract_con_id);
ALTER TABLE customer
ADD CONSTRAINT customer_adress_fk FOREIGN KEY ( adress_adress_id )
    REFERENCES adress ( adress_id );
ALTER TABLE relation_1
ADD CONSTRAINT relation_1_contract_fk FOREIGN KEY ( contract_con_id )
    REFERENCES contract ( con_id );
ALTER TABLE relation_1
ADD CONSTRAINT relation_1_customer_fk FOREIGN KEY ( customer_c_id )
    REFERENCES customer ( c_id );

2 个答案:

答案 0 :(得分:1)

语法使用VALUES()作为值列表:

INSERT INTO customer (c_id, name, age)
    VALUES (1, 'Carl', 45);

您也可以使用SELECT

INSERT INTO customer (c_id, name, age)
    SELECT 1, 'Carl', 45
    FROM dual;

请注意,在两种情况下,字符串的分隔符都是单引号而不是双引号

答案 1 :(得分:0)

在SQL中,我们对字符串文字使用单引号。双引号(可选)用于标识符,例如表名和列名。您已经在carl的值附近使用了双引号,这就是Oracle要求ORA-00984的原因。

为什么您对第一条陈述的回答是ORA-00904是一个谜。 customer的定义可能有些问题,但是除非您发布表结构,否则我们无法确定。