【发布时间】:2020-11-05 15:46:09
【问题描述】:
我在 SQL Server 中创建了一个数据库,前端是 PHP - CodeIgniter。在数据库中,我用其他表创建了多个外键。现在,当用户尝试删除记录时,而不是真正删除我想将记录标记为deleted = 1,只有在子表中没有可用的参考记录时才应该这样做。以下是示例表:
Parent_Table
Id INT(PK), Name Varchar, deleted INT
Child_Table
Id INT(PK), FK_Parent_Table_ID INT, address varchar, deleted INT
以上只是我的表格的示例。现在,每当用户尝试从父表中删除记录时,外键都会检查约束,然后删除记录,这里我希望将其标记为 deleted = 1,而不是实际删除。
我尝试过使用transaction->start 和transaction->complete,所以如果外键失败,事务就会中止,但这里的问题是,如果外键没有失败,则会发生回滚,在这种情况下,记录的PRIMARY KEY将被改变不应该做的。
所以,我想要一种在事务开始之前检查外键冲突而不实际删除记录的方法
【问题讨论】:
标签: sql sql-server codeigniter sql-server-2005