Partilhar via


Cursores e bloqueio

No Microsoft SQL Server Compact 4.0, a instrução SELECT em uma definição de cursor está sujeita às mesmas regras de bloqueio de transação que se aplicam a qualquer outra instrução SELECT. Os bloqueios de transação adquiridos por qualquer instrução SELECT, incluindo a instrução SELECT em uma definição de cursor, são controlados por:

  • Configuração do nível de isolamento da transação da conexão.

  • Todas as dicas de bloqueio especificadas na cláusula FROM.

Apenas para tabela base ou cursores de índice, o nível de isolamento da transação pode afetar os bloqueios adquiridos.

Importante

Para o nível de isolamento padrão ou READ COMMITTED, o SQL Server Compact 4.0 não adquire bloqueios ao posicionar e ler dados. Os cursores em LEITURA CONFIRMADA requerem um bloqueio Sch-S para proteger a estabilidade do esquema enquanto o cursor é aberto. Bloqueios exclusivos são tirados quando os dados são alterados.

Os bloqueios são mantidos até o término da transação atual em cursores e instruções SELECT independentes.

Adquirindo bloqueios

Embora os cursores sigam as mesmas regras das instruções SELECT independentes, com relação ao tipo de bloqueio de transação adquirido, os bloqueios são adquiridos em momentos diferentes. Os bloqueios gerados por uma instrução SELECT independente, ou um cursor, são sempre adquiridos quando uma linha é requerida. Para uma instrução SELECT independente, todas as linhas são recuperadas quando a instrução é executada. Os cursores recuperam as linhas em momentos diferentes, dependendo do tipo de cursor:

  • Cursores estáticos recuperam o conjunto de resultados inteiro no momento em que o cursor é aberto. Isso bloqueia todas as linhas do conjunto de resultados no momento da abertura.

  • Cursores controlados por conjuntos de chaves recuperam as chaves de cada linha do conjunto de resultados no momento que o cursor é aberto. Isso bloqueia todas as linhas do conjunto de resultados no momento da abertura.

  • Cursores de somente avanço não recuperam as linhas até que elas sejam buscadas. Os bloqueios não são adquiridos nas linhas até que sejam posicionados.

Consulte também

Conceitos

Tipos de cursores

Escolhendo um tipo de cursor

Conversões implícitas de cursor

Atualizando cursores controlados por conjuntos de chaves