gpt4 book ai didi

oracle - 共享相同外键的两个或多个表是否可以共享对该外键的约束?

转载 作者:行者123 更新时间:2023-12-04 00:44:26 24 4
gpt4 key购买 nike

这段代码有什么问题??它给出错误“名称已被另一个约束使用”。另外,如果我不能在不同的表中定义相同的约束,那么有什么方法可以重用以前定义的约束吗?

有什么见解吗??

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)
);

似乎表“tbl_client_formats”中定义的外键约束“fk_format_id”与表“tbl_format_detail”中已定义的相同约束冲突。我是 oracle 的新手,所以即使是显而易见的事情也请解释一下。

最佳答案

问题是您试图使用相同的约束名称 两次。只需为您的第二个约束使用不同的名称(例如 fk_client_formats_format_id),您应该没问题。

通常,我建议使用表名作为约束名称的一部分,以避免名称冲突(如果约束名称太长,您将不得不使用某种缩写方案)。

关于oracle - 共享相同外键的两个或多个表是否可以共享对该外键的约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13623028/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com