我正在尝试向客户插入一些值,然后出现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 );
答案 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
的定义可能有些问题,但是除非您发布表结构,否则我们无法确定。