2012-10-08 10 views
6

Jestem nowy wyroczni, Stworzyłem dwie tabele przy użyciu następujących zapytańORA-00907: brak prawego nawiasu Błąd podczas tworzenia tabeli?

CREATE TABLE employee 
(
emp_name VARCHAR(20) NOT NULL, 
street VARCHAR(50) NOT NULL, 
city VARCHAR(20) NOT NULL, 
PRIMARY KEY(emp_name) 
) 

i

CREATE TABLE company 
(
comp_name VARCHAR(20) NOT NULL, 
city VARCHAR(20) NOT NULL, 
PRIMARY KEY(comp_name) 
) 

Teraz próbuję utworzyć inną tabelę za pomocą kilku kluczy obcych,

CREATE TABLE works 
(
emp_name varchar(20) NOT NULL, 
comp_name varchar(20) NOT NULL, 
salary int(10) NOT NULL, 
FOREIGN KEY(emp_name) REFERENCES employee(emp_name), 
FOREIGN KEY(comp_name) REFERENCES company(comp_name) 
) 

Otrzymanie BŁĘDU: ORA-00907: brak nawiasu prawego

Próbowałem również z

CREATE TABLE works 
(
emp_name varchar(20) NOT NULL, 
comp_name varchar(20) NOT NULL, 
salary int(10) NOT NULL, 
constraint wemployee FOREIGN KEY(emp_name) REFERENCES employee(emp_name), 
constraint wcompany FOREIGN KEY(comp_name) REFERENCES company(comp_name) 
) 

ale coraz ten sam błąd. Czy ktoś może mi powiedzieć, że popełniam błąd?

Odpowiedz

3

ja nie jestem ekspert od wyroczni, ale czy wolno ci podać (10) w salary int(10) NOT NULL?

+0

Mam to! .. Dzięki :) @pilotcam – Nina

1

Podczas tworzenia indeksu inline z resztą rachunku tworzenia tabeli spróbować upuszczenie FOREIGN KEY udział:

CREATE TABLE works 
(
emp_name varchar(20) NOT NULL, 
comp_name varchar(20) NOT NULL, 
salary int(10) NOT NULL, 
emp_name REFERENCES employee(emp_name), 
comp_name REFERENCES company(comp_name) 
) 

zobaczyć to pytanie Więcej szczegółów:

ORA-00907: missing right parenthesis

+0

Otrzymanie tego samego błędu !. Mimo wszystko dziękuję. Otrzymałem odpowiedź od Pilotcam. – Nina

1

Spójrz tutaj są dwa różne sposoby tworzenia tabeli ze stałymi.

1) utworzyć dział tabeli ( DEPTNO numer (5) klucz podstawowy, DEPTNAME varchar2 (30), liczba EmpNo (5) odniesienia EMP (EmpNo));

2) utworzyć dział Stół ( DEPTNO numer (5), DEPTNAME varchar2 (30), liczba EmpNo (5), ograniczenie pkey_deptno klucza podstawowego (DEPTNO) ograniczenie fkey_empno klucz obcy (EMPNO) odwołuje EMP (empno));

2

1: powinieneś mieć tabelę o nazwie "test" z dwiema kolumnami, id i testdata. (To tylko głupi przykład szybki, więc nie będę starał się podać żadnych ograniczeń na id.)

create table test (id number, testdata varchar2(255)); 

2: Następna będziemy tworzyć sekwencję użyć do numerów identyfikacyjnych w naszej tabeli testowej.

create sequence test_seq 
start with 1 
increment by 1 
nomaxvalue; 

Można zmienić „start z 1” na dowolnej liczbie chcesz rozpocząć z (na przykład, jeśli masz już 213 wpisów w tabeli i chcesz rozpocząć korzystanie z tego dla 214th wpisu, zastąp „start z 214 "). Klauzula "przyrostu o 1" jest domyślna, więc można ją pominąć. Możesz również zastąpić go "przyrostem o n", jeśli chcesz pominąć numery n-1 między numerami identyfikacyjnymi. "Wartość nomax" mówi, że musi się zwiększać na zawsze, w przeciwieństwie do resetowania w pewnym momencie.i (jestem pewien, że Oracle ma pewne ograniczenia co do tego, jak duże mogą one być, ale nie wiem, co to jest limit).
3: Teraz jesteśmy gotowi, aby utworzyć spust, który automatycznie wstawi następny numer z sekwencji do kolumny id.

create trigger test_trigger 
before insert on test 
for each row beginselect test_seq.nextval into :new.id from dual; 
end; 
/
Powiązane problemy