背景在SQLite数据库中,最好使用tirggers来处理级联表更改,还是更好地以编程方式执行?
我有几个使用SQLite数据库的项目。存储在数据库中的数据显然存储在多个表中,通过键/外键值链接。
问题是,在这些数据库中,如果某个记录发生某些变化,我必须更新其他几个表。我头上最好的例子就是删除一条记录。我必须确保与删除的记录相关的所有其他记录也被删除。现在,我相信这个例子可以使用键/外键值来解决,但更复杂的更新呢?
现在我不是亲数据库管理员,但我知道需要数据库中的数据完整性或事情变得丑陋。
问题
所以,我的问题。我知道在以编程方式更新相关表格时我有更好的控制权,但是以人为错误和时间为代价。我可能会错过某些东西,或者没有正确实施表更新,并且需要更长的时间来编写更新。另一方面,我可以放入触发器并让DB处理其他表的更新,但是然后我失去了很多控制权。
那么,哪一个更好?在不同的情况下每种都更好吗?
没有你考虑使用'ON DELETE CASCADE'在FK定义?如果正确实施,触发器允许您拥有始终一致的数据库。但是这些并不是很容易正确实施,触发器通常没有多少操作空间。如果级联要求简单明了,我会尝试'ON DELETE'并且首先触发方法。 – 9000 2011-03-04 15:43:10
正如我在我的问题中提到的,我知道我给出的例子可以用k/fk来解决,但我想知道更复杂的表更新,就像“名称”列(不是关键字)发生更改一样在别处改变。与键无关的东西。 – 2011-03-04 15:59:32