Rya*_*yan 6 database sql-server concurrency multithreading triggers
我一直在想关于SQL Server数据库触发器的并发语义.我有一个数据库触发器,在更新表后运行.触发器将"dateModified"列设置为当前时间.这使我始终知道表的最新更新发生在X时.下面是它的样子:
ALTER TRIGGER base.TR_myTrigger ON base.myTable
AFTER INSERT, UPDATE AS
BEGIN
DECLARE @dateModified AS DATETIMEOFFSET
SET @dateModified = SYSDATETIMEOFFSET()
UPDATE base.myTable
Set dateModified = @dateModified
WHERE id in (SELECT DISTINCT(id) FROM inserted)
END
Run Code Online (Sandbox Code Playgroud)
在我的场景中,表可以随时由任意数量的线程更新.这个触发器在多线程环境中是否安全?如果线程A更新了表,并且线程B在之后立即从中读取,那么B是否会看到具有A更新但没有触发更新的表的状态?或者触发器是否保护表不被读取,直到执行了所有操作+其触发器?
任何洞察使用SQL数据库触发器在幕后发生的事情都将受到赞赏.谢谢!
| 归档时间: |
|
| 查看次数: |
1785 次 |
| 最近记录: |