相关疑难解决方法(0)

使用SQL Server选择更新

我使用的是隔离级别的Microsoft SQL Server 2005数据库READ_COMMITTEDREAD_COMMITTED_SNAPSHOT=ON.

现在我想用:

SELECT * FROM <tablename> FOR UPDATE
Run Code Online (Sandbox Code Playgroud)

...以便在尝试访问同一行"FOR UPDATE"时阻止其他数据库连接.

我试过了:

SELECT * FROM <tablename> WITH (updlock) WHERE id=1
Run Code Online (Sandbox Code Playgroud)

...但是即使选择"1"以外的ID,这也会阻止所有其他连接.

SELECT FOR UPDATE对于Oracle,DB2,MySql而言,这是正确的提示吗?

编辑2009-10-03:

这些是创建表和索引的语句:

CREATE TABLE example ( Id BIGINT NOT NULL, TransactionId BIGINT, 
    Terminal BIGINT, Status SMALLINT );
ALTER TABLE example ADD CONSTRAINT index108 PRIMARY KEY ( Id )
CREATE INDEX I108_FkTerminal ON example ( Terminal )
CREATE INDEX I108_Key ON example ( TransactionId )
Run Code Online (Sandbox Code Playgroud)

很多并行进程都这样做SELECT:

SELECT * …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2005 read-committed-snapshot

76
推荐指数
6
解决办法
17万
查看次数