SQL number() 上的外键
SQL foreign key on number()
有一个关于添加外键的新手问题。
使用现有的 ORACLE SQL 数据库,我需要添加一个新的 table。
这是我的脚本:
CREATE TABLE TEST_ASH_CONTACTS (
ASH_ID number(19,0) FOREIGN KEY REFERENCES ASH_ADMIN_STAKEHOLDER(ASH_ID),
ASH_CONTACT_ID number(19,0) GENERATED BY DEFAULT ON NULL AS IDENTITY,
ASH_CONTACT_NAME varchar2(80 BYTE),
ASH_CONTACT_TELEFOONNUMMER varchar2(25 BYTE),
ASH_CONTACT_GSMNUMMER varchar2(25 CHAR),
ASH_CONTACT_FAXNUMMER varchar2(25 BYTE),
ASH_CONTACT_EMAILADRES varchar2(100 BYTE),
ASH_CONTACT_WEBSITE varchar2(100 BYTE) );
现有的table ASH_ADMIN_STAKEHOLDER包含主键ASH_ID number(19) 已在其他现有的table中使用。
当我在 SQLDEVELOPER 工作表中输入语句时,工作表中的关键字 FOREIGN 出现语法错误:“语法错误部分识别规则 ...”
我相信我遵循了 w3schools 网站上的示例:
CREATE TABLE Orders (
OrderID int NOT NULL PRIMARY KEY,
OrderNumber int NOT NULL,
PersonID int FOREIGN KEY REFERENCES Persons(PersonID) );
区别在于 ASH_ID 不是 int 而是 number(19,0)
在图像中,我可以显示利益相关者 table 和同一 ASH_ID 字段上的另一个 table 之间的当前关系。
希望有人能指出我正确的做法 ;-)
欢迎对脚本提出任何其他建议。
看看这是否有帮助:
首先掌握table(必须有一个主键或唯一键,然后将被外键引用):
SQL> create table ash_admin_stakeholder(ash_id number(19) primary key);
Table created.
详细信息 table:有效 语法正确:
SQL> create table test_ash_contacts
2 (ash_id number(19, 0) constraint fk_con_ash references ash_admin_stakeholder (ash_id));
Table created.
或者,如果你想使用大纲外键约束:
SQL> create table test_ash_contacts
2 (ash_id number (19, 0),
3 constraint fk_con_ash foreign key (ash_id)
4 references ash_admin_stakeholder (ash_id)
5 );
Table created.
SQL>
关于您对 INT
与 NUMBER(19, 0)
的担忧:也没有问题:
SQL> create table test_ash_contacts
2 (ash_id int constraint fk_con_ash references ash_admin_stakeholder (ash_id));
Table created.
SQL>
给定一个 parent table 这样的:
create table ash_admin_stakeholder
( ash_id number(19) primary key );
您可以像这样明确命名约束:
create table test_ash_contacts
( ash_id constraint your_constraint_name references ash_admin_stakeholder(ash_id)
否则让 Oracle 生成名称:
create table test_ash_contacts
( ash_id references ash_admin_stakeholder(ash_id)
重复 child table 的数据类型没有任何好处。
顺便说一下,我也会把身份列做成PK,例如
ash_contact_id number(19,0) generated as identity
constraint test_ash_contacts_pk primary key
有一个关于添加外键的新手问题。
使用现有的 ORACLE SQL 数据库,我需要添加一个新的 table。
这是我的脚本:
CREATE TABLE TEST_ASH_CONTACTS (
ASH_ID number(19,0) FOREIGN KEY REFERENCES ASH_ADMIN_STAKEHOLDER(ASH_ID),
ASH_CONTACT_ID number(19,0) GENERATED BY DEFAULT ON NULL AS IDENTITY,
ASH_CONTACT_NAME varchar2(80 BYTE),
ASH_CONTACT_TELEFOONNUMMER varchar2(25 BYTE),
ASH_CONTACT_GSMNUMMER varchar2(25 CHAR),
ASH_CONTACT_FAXNUMMER varchar2(25 BYTE),
ASH_CONTACT_EMAILADRES varchar2(100 BYTE),
ASH_CONTACT_WEBSITE varchar2(100 BYTE) );
现有的table ASH_ADMIN_STAKEHOLDER包含主键ASH_ID number(19) 已在其他现有的table中使用。 当我在 SQLDEVELOPER 工作表中输入语句时,工作表中的关键字 FOREIGN 出现语法错误:“语法错误部分识别规则 ...”
我相信我遵循了 w3schools 网站上的示例:
CREATE TABLE Orders (
OrderID int NOT NULL PRIMARY KEY,
OrderNumber int NOT NULL,
PersonID int FOREIGN KEY REFERENCES Persons(PersonID) );
区别在于 ASH_ID 不是 int 而是 number(19,0)
在图像中,我可以显示利益相关者 table 和同一 ASH_ID 字段上的另一个 table 之间的当前关系。
希望有人能指出我正确的做法 ;-) 欢迎对脚本提出任何其他建议。
看看这是否有帮助:
首先掌握table(必须有一个主键或唯一键,然后将被外键引用):
SQL> create table ash_admin_stakeholder(ash_id number(19) primary key);
Table created.
详细信息 table:有效 语法正确:
SQL> create table test_ash_contacts
2 (ash_id number(19, 0) constraint fk_con_ash references ash_admin_stakeholder (ash_id));
Table created.
或者,如果你想使用大纲外键约束:
SQL> create table test_ash_contacts
2 (ash_id number (19, 0),
3 constraint fk_con_ash foreign key (ash_id)
4 references ash_admin_stakeholder (ash_id)
5 );
Table created.
SQL>
关于您对 INT
与 NUMBER(19, 0)
的担忧:也没有问题:
SQL> create table test_ash_contacts
2 (ash_id int constraint fk_con_ash references ash_admin_stakeholder (ash_id));
Table created.
SQL>
给定一个 parent table 这样的:
create table ash_admin_stakeholder
( ash_id number(19) primary key );
您可以像这样明确命名约束:
create table test_ash_contacts
( ash_id constraint your_constraint_name references ash_admin_stakeholder(ash_id)
否则让 Oracle 生成名称:
create table test_ash_contacts
( ash_id references ash_admin_stakeholder(ash_id)
重复 child table 的数据类型没有任何好处。
顺便说一下,我也会把身份列做成PK,例如
ash_contact_id number(19,0) generated as identity
constraint test_ash_contacts_pk primary key