Как правильно отформатировать новую таблицу, которая извлекает из другой таблицы при создании ограничений в SQL - PullRequest
0 голосов
/ 04 октября 2018

Ниже я создал таблицу с первичным ключом, внешним ключом, ненулевыми ограничениями, однако постоянно получаю сообщение об ошибке

"% s: неверный идентификатор"

Авторы CREATE TABLE ((authorid VARCHAR2 (4), фамилия VARCHAR2 (10), имя VARCHAR2 (10), isbn VARCHAR2 (10), название VARCHAR2 (30)),
(КОНСТРАИНТ wt_pk ПЕРВИЧНЫЙ КЛЮЧ (authorid), КОНСТРИНТ wt_nNOT NULL (название), CONSTRAINT wt_fk FOREIGN KEY (isbn) Ссылки книги (isbn)));

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Сначала создайте таблицу, затем попробуйте выполнить вставку в select.

CREATE TABLE writers
(
    authorid <datatype>, 
    last name <datatype>, 
    first name <datatype>, 
    isbn <datatype>, 
    title <datatype>,  
    CONSTRAINT wt_pk PRIMARY KEY (authorid),
    CONSTRAINT wt_nn NOT NULL (title),
    CONSTRAINT wt_fk FOREIGN KEY (isbn) REFERENCES books (isbn)
) ;

insert into writers (authorid, last name, first name, isbn, title)
SELECT authorid, fname, lname, isbn, title 
     FROM author 
     JOIN bookauthor USING (authorid)
     JOIN books USING (isbn);
0 голосов
/ 04 октября 2018

Oracle не позволяет указывать определение таблицы с помощью as.Итак, сначала создайте таблицу, а затем добавьте ограничения:

CREATE TABLE writers as
    SELECT authorid, fname, lname, isbn, title
    FROM author JOIN
         bookauthor
         USING (authorid) JOIN
         books
         USING (isbn);

ALTER TABLE writers
    ADD CONSTRAINT wt_pk PRIMARY KEY (authorid);
ALTER TABLE writers
    ADD CONSTRAINT wt_nn NOT NULL (title);
ALTER TABLE writers
    ADD CONSTRAINT wt_fk FOREIGN KEY (isbn) REFERENCES books (isbn);

Предположительно, вы действительно хотите, чтобы первичный ключ ограничивался (authorid, isbn), а не просто authorid.

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