使关系不可变

时间:2013-11-30 09:03:36

标签: sql postgresql triggers

我在表A中有记录,不应修改创建后的表。可以直接阻止通过触发器更新属性。

问题是表A与表B有多对多的关系。现在我要做的是阻止更新连接表(即插入/更新/删除)表A中已经创建(尚未删除)的记录。

目的是不仅具有恒定的属性,而且具有恒定的关系。任何的想法?

PS我不知道这是否是一个问题,但表A有一个可能会改变的复合主键。

1 个答案:

答案 0 :(得分:1)

说你的很多:很多表是TableAB(colA,colB),它连接表A和B.谁在多个:多个(连接)行上插入?你有控制权吗?我得到它的方式,你希望这个插入只发生一次给定/固定的行A.

在表A中添加列IsAlreadyMapped。当某人将行A映射到表B中的行S集时,将此IsAlreadyMapped标志设置为1.请注意,B中的行集S也可以是空集。一旦IsAlreadyMapped设置为1,就不允许其他人将同一行A映射到表B中的另一组行。我认为这很简单。删除行A(物理或逻辑)时,可以根据需要更新IsAlreadyMapped。然后你也可以在表B侧添加这样的列。

我不确定我是否了解您的所有要求, 所以我只是在这里抛出一些想法。希望它有所帮助。