Получение бесконечных ошибок с оператором вставки - PullRequest
0 голосов
/ 24 ноября 2018

Я пытаюсь вставить некоторые значения в клиента, а затем я получаю ошибку 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 голосов
/ 24 ноября 2018

В SQL мы используем одинарные кавычки для строковых литералов.Двойные кавычки используются (необязательно) для идентификаторов, таких как имена таблиц и столбцов.Вы использовали двойные кавычки вокруг значения carl, и поэтому Oracle выбрасывает ORA-00984.

Почему вы получили ORA-00904 для первого утверждения, остается загадкой.Возможно, что-то не так с вашим определением customer, но если вы не публикуете структуру таблицы, мы не можем быть уверены.

0 голосов
/ 24 ноября 2018

Синтаксис использует 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;

Обратите внимание, что в обоих случаях разделительдля строки одинарные кавычки не двойные кавычки .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...