2016-04-10 4 views
0

Я относительно новичок в Базах данных и Oracle, и я пытаюсь создать базу данных для проекта с участием 2 таблиц; Klant (клиент) и Account_. Эти 2 обе имеют PK в качестве внешнего ключа. Так как это так, я должен был сделать внешние ключи после создания таблиц, в результате чего в этом(Oracle) Добавление ограничения после того, как таблица была сделана

DROP TABLE KLANT CASCADE CONSTRAINTS; 
DROP TABLE ACCOUNT_ CASCADE CONSTRAINTS; 

CREATE TABLE KLANT 
(
    "KlandId" INT PRIMARY KEY, 
    "AccountId" INT, 
    "Voornaam" VARCHAR2(64)NOT NULL, 
    "Achternaam" VARCHAR2(64) NOT NULL, 
    "GENDER" CHAR(1) DEFAULT 'M' CHECK (UPPER(GENDER) in ('M','F')), 
    "Tussenvoegsels" VARCHAR2(16), 
    "EmailAdres" VARCHAR2(64), 
    "Land" VARCHAR2(64) DEFAULT 'Nederland', 
    "Stad" VARCHAR2(64), 
    "Adres" VARCHAR2(64), 
    "Toevoeging" CHAR(1)); 

CREATE TABLE Account_ 
(
    "AccountId" INT PRIMARY KEY, 
    "KlantId_" INT, 
    "GebruikersNaam" VARCHAR2(64)UNIQUE NOT NULL, 
    "Wachtwoord" VARCHAR2(64) 
); 

ALTER TABLE KLANT 
ADD CONSTRAINT fk_accountId FOREIGN KEY (AccountId) REFERENCES "Account_"(AccountId); 

ALTER TABLE Account_ 
ADD CONSTRAINT fk_klantId FOREIGN KEY (KlantId_) REFERENCES "Klant"(KlantId); 

Это дало мне следующую ошибку:

Error starting at line : 39 in command - 
ALTER TABLE KLANT 
ADD CONSTRAINT fk_accountId FOREIGN KEY (AccountId) REFERENCES "Account_"(AccountId) 
Error report - 
SQL Error: ORA-00904: "ACCOUNTID": invalid identifier 
00904. 00000 - "%s: invalid identifier" 
*Cause:  
*Action: 

Извини за все голландские слова: (

Мой вопрос заключается в том: где же я запутались, потому что это, вероятно, что-то riduculously глупо

+0

Извините, что я разместил его перед его полным редактированием. –

ответ

0

Цитата AccountId В объектах Oracle, как правило, в верхнем регистре Whe... n вы используете AccountId без его цитирования, Oracle будет искать ACCOUNTID.

+0

Все еще возвращает мне ту же ошибку, предполагая, что вы имели в виду AccountId с скобками ссылок. –

+0

Хммм. Мне немного любопытно (и это не имеет никакого отношения к вашему вопросу), почему у вас будут ссылки на круговые внешние ключи в этих таблицах. В любом случае, вы говорите, что с использованием ССЫЛКИ «Account _» («AccountId») не работает? Изменить. Вы также должны сделать это в компоненте FOREIGN KEY (AccountId). Должен читать FOREIGN KEY («AccountId») –

+0

Это ограничение, как у меня есть сейчас: ALTER TABLE KLANT ADD CONSTRAINT fk_accountId FOREIGN KEY («AccountId») ССЫЛКИ «Account _» («AccountId»); Теперь он дает мне уведомление о том, что таблицы или вида просто не существует. Что странно, так как я получил подтверждение созданной таблицы Account_. –

0
 ALTER TABLE KLANT 
ADD CONSTRAINT fk_accountId FOREIGN KEY ("AccountId") REFERENCES Account_("AccountId"); 

Название таблицы Account_ не должно быть в двойных кавычках. То же самое для другой таблицы.

+0

Это работает, если и где удалить цитаты в моем создаваемом querie. ставя оба экземпляра AccountId между кодом, дал мне тот же результат. –

+0

Я отредактировал свой ответ, просто попробуй, как он есть, и скажи, если это сработает. В то время как AccountId лучше указывать, вам запрещено указывать имя таблицы (Account_) в кавычках. – Iman

Смежные вопросы