我使用cursor.copy_expert命令将数据复制到几个postgresql表中。加载数据后,当我运行以下查询时,我看到针对这些表的模式设置为"AccessShareLock“、"RowExclusiveLock”、"ShareUpdateExclusiveLock“-
select t.relname,l.locktype,page,virtualtransaction,pid,mode,granted from pg_locks l, pg_stat_all_tables t where l.relation=t.relid order by relation
说SELECT FOR UPDATE设置一个IX锁。IX锁是意图排他锁,当发出时它意味着“事务T打算在扫描行上设置X(排它)锁”。MySQL术语表表示,关于意图排他性锁:
一种适用于表级别的锁,用于指示事务打算在表中的行上获取什么样的锁。不同的事务可以在同一表上获取不同类型的意图锁,,但是获取表上的意图排他(IX)锁的第一个事务阻止其他事务获取表上的任何S或X锁
,我正在尝试测试一种情况,在这种情况下,我希望锁定被读取和更新的行。SELECT * FROM dbo.table1 WITH (UPDLOCK, HOLDLOCK)我希望在表上放置一个排他锁为什么MSSQL不尊重锁提示?编辑1
有关这些锁是如何工作的任何信息都是值得赞赏的,但是,当前的问题是Server似乎没有强制执行我指定的锁。它需要.NET