这段代码有什么问题? 它给出错误“名称已被另一个约束使用”。另外,如果我不能在不同的表中定义相同的约束,那么有什么办法可以重用先前定义的约束吗?共享相同外键的两个或多个表可以共享该外键的约束吗?
任何见解?
CREATE TABLE tbl_formats
(
format_id NUMBER(5),
format_name VARCHAR2(50),
format_desc VARCHAR2(100),
valid_from DATE,
valid_to DATE,
format_type VARCHAR2(50),
CONSTRAINT pk_format_id PRIMARY KEY(format_id)
);
CREATE TABLE tbl_format_detail
(
id NUMBER(10),
format_id NUMBER(5),
src_field VARCHAR2(200),
target_field VARCHAR2(100),
business_rule VARCHAR2(4000),
expression VARCHAR2(4000),
target_segment VARCHAR2(4),
CONSTRAINT pk_id PRIMARY KEY(id),
CONSTRAINT fk_format_id FOREIGN KEY(format_id) REFERENCES tbl_formats(format_id)
);
CREATE TABLE tbl_client_formats
(
client_format_id NUMBER(10),
format_id NUMBER(5),
client_id NUMBER(5),
CONSTRAINT pk_client_format_id PRIMARY KEY(client_format_id),
CONSTRAINT fk_format_id FOREIGN KEY(format_id) REFERENCES tbl_formats(format_id),
CONSTRAINT fk_client_id FOREIGN KEY(client_id) REFERENCES tbl_clients(client_id)
);
它看起来像外键约束“fk_format_id”在表“tbl_client_formats”与表“tbl_format_detail”已经定义了相同的约束冲突定义。 我是oracle新手,所以请解释明显的事情。
感谢您的回答。我可以重复使用先前定义的约束,而不是使用不同的名称定义相同的约束吗? –
每个约束都应该有其唯一的名称。您必须在重新使用之前删除以前的名称。 – ntalbs
我最后的评论很混乱,所以我删除了它。我明白了。谢谢 –