我可以为表指定锁定-schema-还是取决于事务?

时间:2017-10-25 12:35:06

标签: sql sql-server sybase

在Sybase中,我可以指定表的锁定模式,如果是,数据行,页面或表锁定。 以下是SYBASE如何使用指定锁表创建表的示例。

create  table dbo.EX_EMPLOYEE(
   TEXT   varchar(1000)  null
)
alter table EX_EMPLOYEE lock allpages
go

在SQL服务器中有这样的lock tables(SO answer),但是我可以为表指定锁吗?

我的问题:我可以指定表的锁类型吗?或者在SQL服务器中它是不同的?它取决于我运行的查询吗?

在此link中说:

  

正如安德烈亚斯指出的那样,没有默认的锁定级锁   按照您尝试在数据库中执行的操作。只是   一些例子。如果是特定行的删除/更新独占   将在该行上执行锁定如果是选择操作共享锁定   将被采取如果它被更改表Schema Mod锁将很快采取   等等杰里米指出如果你正在寻找隔离   等级它被读取提交。

他们是对的吗?我可以说Sybase中的锁定表与SQL服务器不同吗?

1 个答案:

答案 0 :(得分:1)

锁定机制不一样,但您在SQL Server中确实有一些控件可用于锁定 - 例如,您可以在查询中指定with rowlockwith paglockwith (tablockx)专属桌锁。

与控制时所有此类锁定一样 - 您必须对可能导致的阻止负责 - 所以请小心使用。

包含完整说明的文档:https://docs.microsoft.com/en-us/sql/t-sql/queries/hints-transact-sql-table