- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含多个表的事务。在从 EDITED_TABLE
中删除了一些记录后,我需要防止插入到 TABLE_TO_BE_LOCKED
。目前我正在使用 TABLOCKX
DELETE EDITED_TABLE FROM EDITED_TABLE
left join TABLE_TO_BE_LOCKED with (TABLOCKX) on ....
WHERE ...
我需要防止向 TABLE_TO_BE_LOCKED
插入新记录,但我想保留读取它的可能性。 DELETE
TABLE_TO_BE_LOCKED
仍然没有改变,这就是显式锁定的原因。
我可以使用 TABLOCK, HOLDLOCK
代替 TABLOCKX
吗?
注意:
我知道 How to lock a table for inserting in sql? .但是,结果是不要这样做以防止主键重复。
最佳答案
如果表在一个事务中有写入,那么独占锁将被持有直到事务结束。在这种情况下,您无法启用 SELECT,除非您在 SELECT 上使用 NOLOCK,但您会看到已删除的行。
TABLOCK, HOLDLOCK
将简单地独占锁定整个表,直到事务结束
听起来您正在尝试修复您选择的解决方案:有了更多信息,我们也许能够提供一个更好的解决方案,它可以在没有锁定提示的情况下执行您想要的操作。例如,如果您的事务需要一个不受其他执行插入操作影响的已删除数据的一致 View ,那么您可以尝试一种或多种
评论后...
BEGIN TRAN
SELECT *
INTO #temp
FROM TABLE_TO_BE_LOCKED
WHERE .. -- or JOIN to EDITED_TABLE
DELETE EDITED_TABLE FROM EDITED_TABLE
left join #temp with (TABLOCKX) on ....
WHERE ...
-- do stuff with #temp
COMMIT
关于sql-server - TABLOCK、HOLDLOCK 是否足以阻止 INSERT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17081911/
我想在我公司的 Intranet 中,在 Internet 上放置一个 Web 服务,以使合作伙伴能够访问该 Web 服务提供的信息。 目前,Web 服务位于 SOA 中,我决定将所有内容都迁移到 R
是the Scribe OAuth library (用Java编写)支持3足OAuth ? 这里有人说它只适用于两条腿: How do I use OAuth within my GWT appli
在 React 中使用 Redux 进行 OAuth2 身份验证的可接受方法是什么? 我当前的设置涉及使用 Redux-Auth-Wrapper 包装 react 路由器组件,如果用户未经过身份验证,
OAuth 1.0a 凭证需要以明文形式(或以明文形式检索的方式)存储在服务器上,至少在进行 2 腿身份验证时,我是否正确?假设您使用的是 HTTPS 或其他 TLS,这不是比使用用户名和加盐 + 哈
我是一名优秀的程序员,十分优秀!