正如你在这里看到的,在OrderInfo和 中OrderNumber,我有一个关系集。但我不确定是什么样的。我希望建立一个关系,所以如果我删除了OrderNumber,它会级联删除相应的记录中OrderInfo,但它不会让我。它给了我这个讨厌的'
不能在标识列上级联删除
错误,所以在删除级联删除后,它让我适当地保存它。我不确定关键的关键是什么,但我知道无限的关键是一对多?
上图是我的数据结构图。它代表一个层次结构,可以包含三种不同类型的“元素”:“A”、“B”和“C”。的关系表明删除级联行为我也喜欢用,如果它是可能的。
所有类型都有共同的属性,包括显示层次结构(父级和索引)中的位置和元素类型的列。这些公共列存储在ElementBase表中。
每种类型的元素还具有独特的属性,这些属性根据元素类型存储在相应的表中。
中的每一行AData,BData并CData引用 中的唯一主行ElementBase。“A”和“C”元素也各自引用“B”元素。“B”元素可以有0个或多个“S”。
我的问题是:如何维护引用完整性并支持级联删除之类的功能?
我希望能够从中删除一行ElementBase并在其中包含相应的行AData,BData或者CData也可以删除。例如,如果从 中删除了“B”类型的元素ElementBase,则首先BData应删除相应的行,然后需要在表ElementBase和CData表中删除所有引用它的“C”类型元素,并且所有“A” "-type 元素需要将它们的引用设置为NULLin AData。
最重要的是:如果我删除的元素有任何类型的子元素,我希望相同的逻辑在层次结构中递归运行。
由于ElementBase是自引用,我无法使用该ON DELETE CASCADE表中的简单功能。我也不能使用它,AData或者CData因为它们都引用了BData这可能会导致“多个级联路径”,这在 SQL Server 中显然是邪恶的。
我发现的另一种选择是INSTEAD OF触发器。问题是这种行为必须是递归的,我无法弄清楚如何使它们能够递归并最终在最后进行原始删除。
trigger database-design sql-server referential-integrity cascade
我有一个相当标准的餐厅模型,restaurant在 PostgreSQL 数据库中有一张桌子。所有餐厅都有评分(由average、vote_count和组成vote_sum),但为了避免重复此评分模式,例如pictures我将它们移到单独的rating表中并仅存储rating_idin restaurant。
我知道 1 个评级只会被整个数据库中的 1 个其他行使用。rating在restaurant或 中删除行时如何级联删除picture?
我一直在环顾四周,但我能找到的只是设置了 a REFERENCES,但为此我需要知道将删除哪些表数据。
我知道触发器可以完成这项工作,我只是希望有更优雅的东西。
更新主键时是否可以更新Oracle中所有引用的外键?
像这样的过程,获取表名和主键,查找所有表中的所有外键,并使用新值更新它
PROCEDURE cascade_update_primary(
table_name IN VARCHAR2,
primary_column IN Number,
new_value IN Number);
Run Code Online (Sandbox Code Playgroud)
甲骨文不支持ON UPDATE CASCADE。
在 SQL Server 2014 中,我试图在 3 FK 上添加CASCADE DELETING(我想实际上将字段设置为 null,但相同)。如果我在一个关系中添加级联删除,它工作正常。如果我添加更多级联删除,则不起作用(检测到循环错误消息)。
在上图中,您可以看到用户表和任务表(西班牙语中的“Tareas”)。所以,我需要完成的是,当用户被删除时,我需要将 Tasks 中的标记字段设置为 NULL。
这在数据库中很常见,所以我认为有一种方法可以解决这个问题。
就我而言,我的大多数表都有一对字段,其中包含创建或修改记录的用户的 UserId。所以,我需要解决这个模式来将它应用到几个地方。
我正在使用 postgres v,我正在尝试让多表级联删除工作。
然而,当我这样做时,1 个表/条目不会被删除,我一生都无法理解为什么。
这是我的 DDL(已提取,因此请原谅格式)。
create table public.common
(
created_at timestamp with time zone default CURRENT_TIMESTAMP,
updated_at timestamp with time zone default CURRENT_TIMESTAMP
);
create table public.installations
(
id text not null constraint installations_pkey primary key,
client_key text,
data jsonb
) inherits (public.common);
create table public.platforms
(
id text not null constraint platforms_pkey primary key,
jpd_url text,
jpd_key text
) inherits (public.common);
create table public.webhooks
(
id serial not null constraint webhooks_pkey primary key,
team_id text,
salt text …Run Code Online (Sandbox Code Playgroud) cascade ×6
sql-server ×3
constraint ×2
foreign-key ×2
postgresql ×2
delete ×1
oracle ×1
oracle-11g ×1
plsql ×1
trigger ×1