ORACLE CREATE TABLE 出现 FOREIGN KEY 错误
ORACLE CREATE TABLE with FOREIGN KEY error
我是 Oracle 的初学者,在使用外键创建 table 时遇到问题,我也创建了父 table region
并且一直收到同样的错误。我研究了 W3school 并使用了相同的语法,但仍然没有帮助。
CREATE TABLE region(
region_id INTEGER NOT NULL PRIMARY KEY,
region_name VARCHAR2(20)
);
CREATE TABLE warehouse(
warehouse_id INTEGER NOT NULL PRIMARY KEY,
warehouse_address VARCHAR2(20),
warehouse_postcode VARCHAR2(8),
warehouse_phonenm INTEGER,
region_id FOREIGN KEY REFERENCES region(region_id)
);
您需要声明列 region_id
,然后对其施加外键约束:
CREATE TABLE warehouse(
warehouse_id INTEGER NOT NULL PRIMARY KEY,
warehouse_address VARCHAR2(20),
warehouse_postcode VARCHAR2(8),
warehouse_phonenm INTEGER,
region_id INTEGER,
constraint warehouse_region_id_fk FOREIGN KEY (region_id) REFERENCES region(region_id)
);
或者您可以使用短路语法,也就是内联约束语法(在这种情况下,Oracle 将为约束分配一个默认名称):
CREATE TABLE warehouse(
warehouse_id INTEGER NOT NULL PRIMARY KEY,
warehouse_address VARCHAR2(20),
warehouse_postcode VARCHAR2(8),
warehouse_phonenm INTEGER,
region_id integer REFERENCES region(region_id)
);
如果要内联声明外键约束,请保留“FOREIGN KEY
”。
CREATE TABLE warehouse(
warehouse_id INTEGER NOT NULL PRIMARY KEY,
warehouse_address VARCHAR2(20),
warehouse_postcode VARCHAR2(8),
warehouse_phonenm INTEGER,
region_id REFERENCES region(region_id));
有几种可能性。
先掌握table:
SQL> CREATE TABLE region(
2 region_id INTEGER NOT NULL PRIMARY KEY,
3 region_name VARCHAR2(20)
4 );
Table created.
SQL>
行内约束(与列在同一行):
SQL> CREATE TABLE warehouse(
2 warehouse_id INTEGER NOT NULL PRIMARY KEY,
3 warehouse_address VARCHAR2(20),
4 warehouse_postcode VARCHAR2(8),
5 warehouse_phonenm INTEGER,
6 region_id INTEGER constraint fk_wr REFERENCES region(region_id));
Table created.
SQL>
大纲约束(在create table
结尾):
SQL> CREATE TABLE warehouse(
2 warehouse_id INTEGER NOT NULL PRIMARY KEY,
3 warehouse_address VARCHAR2(20),
4 warehouse_postcode VARCHAR2(8),
5 warehouse_phonenm INTEGER,
6 region_id INTEGER,
7 --
8 constraint fk_wr foreign key (region_id) references region (region_id));
Table created.
SQL>
使用alter table
:
SQL> CREATE TABLE warehouse(
2 warehouse_id INTEGER NOT NULL PRIMARY KEY,
3 warehouse_address VARCHAR2(20),
4 warehouse_postcode VARCHAR2(8),
5 warehouse_phonenm INTEGER,
6 region_id INTEGER);
Table created.
SQL> alter table warehouse add constraint fk_wr foreign key (region_id)
2 references region (region_id);
Table altered.
SQL>
我是 Oracle 的初学者,在使用外键创建 table 时遇到问题,我也创建了父 table region
并且一直收到同样的错误。我研究了 W3school 并使用了相同的语法,但仍然没有帮助。
CREATE TABLE region(
region_id INTEGER NOT NULL PRIMARY KEY,
region_name VARCHAR2(20)
);
CREATE TABLE warehouse(
warehouse_id INTEGER NOT NULL PRIMARY KEY,
warehouse_address VARCHAR2(20),
warehouse_postcode VARCHAR2(8),
warehouse_phonenm INTEGER,
region_id FOREIGN KEY REFERENCES region(region_id)
);
您需要声明列 region_id
,然后对其施加外键约束:
CREATE TABLE warehouse(
warehouse_id INTEGER NOT NULL PRIMARY KEY,
warehouse_address VARCHAR2(20),
warehouse_postcode VARCHAR2(8),
warehouse_phonenm INTEGER,
region_id INTEGER,
constraint warehouse_region_id_fk FOREIGN KEY (region_id) REFERENCES region(region_id)
);
或者您可以使用短路语法,也就是内联约束语法(在这种情况下,Oracle 将为约束分配一个默认名称):
CREATE TABLE warehouse(
warehouse_id INTEGER NOT NULL PRIMARY KEY,
warehouse_address VARCHAR2(20),
warehouse_postcode VARCHAR2(8),
warehouse_phonenm INTEGER,
region_id integer REFERENCES region(region_id)
);
如果要内联声明外键约束,请保留“FOREIGN KEY
”。
CREATE TABLE warehouse(
warehouse_id INTEGER NOT NULL PRIMARY KEY,
warehouse_address VARCHAR2(20),
warehouse_postcode VARCHAR2(8),
warehouse_phonenm INTEGER,
region_id REFERENCES region(region_id));
有几种可能性。
先掌握table:
SQL> CREATE TABLE region(
2 region_id INTEGER NOT NULL PRIMARY KEY,
3 region_name VARCHAR2(20)
4 );
Table created.
SQL>
行内约束(与列在同一行):
SQL> CREATE TABLE warehouse(
2 warehouse_id INTEGER NOT NULL PRIMARY KEY,
3 warehouse_address VARCHAR2(20),
4 warehouse_postcode VARCHAR2(8),
5 warehouse_phonenm INTEGER,
6 region_id INTEGER constraint fk_wr REFERENCES region(region_id));
Table created.
SQL>
大纲约束(在create table
结尾):
SQL> CREATE TABLE warehouse(
2 warehouse_id INTEGER NOT NULL PRIMARY KEY,
3 warehouse_address VARCHAR2(20),
4 warehouse_postcode VARCHAR2(8),
5 warehouse_phonenm INTEGER,
6 region_id INTEGER,
7 --
8 constraint fk_wr foreign key (region_id) references region (region_id));
Table created.
SQL>
使用alter table
:
SQL> CREATE TABLE warehouse(
2 warehouse_id INTEGER NOT NULL PRIMARY KEY,
3 warehouse_address VARCHAR2(20),
4 warehouse_postcode VARCHAR2(8),
5 warehouse_phonenm INTEGER,
6 region_id INTEGER);
Table created.
SQL> alter table warehouse add constraint fk_wr foreign key (region_id)
2 references region (region_id);
Table altered.
SQL>