2011-03-30 49 views
3

我想知道当一个事件发生在另一个SQL表中时,是否可以更新一列(或通常“做某事”)。如何在另一行中删除行时更新SQL表?

更具体地说,我想知道是否可以在父表中删除一行时更改子表中特定列的值。排序为ON DELETE CASCADE,但不删除只更新它们的行。

我正在使用的DBMS是MS SQL Server(Express版)。

非常感谢您

回答

6

使用上,你试图立足事件关闭的表的触发器,或者你可以限制访问(读取删除)从表中只能通过存储过程发生。用于更改其他任何内容的代码将保留在触发器或存储过程中。

我通常更喜欢存储过程路由,但这只是我个人的偏好。

Stored Procedures

Database Triggers

+0

SQL Server有一个OUTPUT子句,它可以通过在删除语句执行时将删除行的数据写入另一个表来简化存储过程工作。其他RDBMS可能具有相似的特征。 – 2011-03-30 13:46:03

+0

谢谢!只需要注意一点:我正在使用.NET Entity Framework来插入,删除等等...... EF本身会触发触发还是必须考虑其他内容?谢谢! – Julen 2011-03-30 13:56:31

+1

您将在数据库级别定义触发器。基本上,你需要设置它,这样每次在表X上发生删除时,它都会执行触发器并对表Y执行一些操作。在你的应用程序中,你将以同样的方式删除行。请注意,只要任何用户从表格中删除记录,该触发器都会执行。如果您希望在执行时间和执行方式方面有更大的灵活性,那么您需要考虑创建一个由应用程序调用的存储过程。 – 2011-03-30 14:07:12

0

你可以写一个触发器来做到这一点。

确切的语法取决于您正在使用的RDBMS

0

是的,这就是所谓的trigger.如果你指定了你正在使用的RDBMS,我们可以给出更具体的信息。

1

我想知道是否有可能 在父表中删除一行 时,更改子表中特定列 中的值。 ON DELETE CASCADE的排序,但不删除行,只需更新它们 。

是例如参考行动ON DELETE SET DEFAULTON DELETE SET NULL

相关问题