更改由未知密钥引用的表行

时间:2015-05-01 17:24:29

标签: sql postgresql

PostgreSQL 中,我有一个表一个,另一个表两个。在两者中都有一些 id 列,并且 one.id 上存在一个引用 two.id 的外键。我想要做的是以这样的方式删除表 two one 中的所有行都将其id设置为null。

问题是我不想修改表本身的内容,只修改结构。我想把提到的外键设置为在删除时设置为null,然后从两个中删除所有行,最后删除两个(级联),但问题是,我不知道约束的名称,所以它需要使用一些高级操作来解决它,我想避免。 我无法直接访问数据库,我所能做的就是对它执行查询。特别是我不能只检查外键的名称。

所以我的问题是 - 有一种简单,快捷的方法吗?

1 个答案:

答案 0 :(得分:0)

  

one.id引用two.id

时存在外键

在这种情况下,one的每一行都有一个id已经NULL或者您要设置NULL。 FK约束意味着该列的非NULL值不是表id行的two

  

我想要做的是以这样的方式删除表格twoone中的所有行的ID都设置为null

那么

出了什么问题
UPDATE one set id = NULL

?如果没有WHERE子句,则所有行都将受到影响。或者,如果您对此不满意,请使用WHERE id IS NOT NULL

显然,如果one.id是表one的PK,那么它将不起作用,如果它是多列PK的一列,或者等等,可能不会,但在其中任何一列在任何情况下,无论你怎么做,你打算做什么都不行。