Skip to content

Commit ffd9d2c

Browse files
andrehankeandrehanke
authored andcommitted
enhance: adicionado noholdlock para transações
1 parent 7fcf9bb commit ffd9d2c

File tree

1 file changed

+20
-19
lines changed

1 file changed

+20
-19
lines changed

src/Database/Schema/Grammar.php

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -48,17 +48,18 @@ public function compileTableExists()
4848
public function compileColumnExists(string $table)
4949
{
5050
return "
51-
SELECT
52-
col.name
53-
FROM
54-
sys.columns AS col
55-
JOIN
56-
sys.objects AS obj
57-
ON
58-
col.object_id = obj.object_id
59-
WHERE
60-
obj.type = 'U' AND
61-
obj.name = '$table'";
51+
SELECT
52+
col.name
53+
FROM
54+
syscolumns col noholdlock
55+
JOIN
56+
sysobjects obj noholdlock
57+
ON
58+
col.id = obj.id
59+
WHERE
60+
obj.type = 'U' AND
61+
obj.name = '$table';
62+
";
6263
}
6364

6465
/**
@@ -112,15 +113,15 @@ public function compileColumns($table)
112113
NULL AS collation, -- Sybase não fornece suporte direto para collation em colunas
113114
com.text AS comment -- Comentários associados à coluna, se existirem
114115
FROM
115-
sysobjects obj
116+
sysobjects obj noholdlock
116117
JOIN
117-
syscolumns col ON obj.id = col.id
118+
syscolumns col noholdlock ON obj.id = col.id
118119
JOIN
119-
systypes type ON col.usertype = type.usertype
120+
systypes type noholdlock ON col.usertype = type.usertype
120121
LEFT JOIN
121-
syscomments def ON col.cdefault = def.id -- Valores padrão da coluna
122+
syscomments def noholdlock ON col.cdefault = def.id -- Valores padrão da coluna
122123
LEFT JOIN
123-
syscomments com ON col.colid = com.colid -- Comentários associados às colunas (se habilitados)
124+
syscomments com noholdlock ON col.colid = com.colid -- Comentários associados às colunas (se habilitados)
124125
WHERE
125126
obj.type IN ('U', 'V') -- 'U' para tabelas, 'V' para visões
126127
AND obj.name = '$table'
@@ -142,9 +143,9 @@ public function compileIndexes($table)
142143
CASE WHEN i.status & 2048 = 2048 THEN 'YES' ELSE 'NO' END AS is_primary,
143144
CASE WHEN i.status & 2 = 2 THEN 'YES' ELSE 'NO' END AS is_unique
144145
FROM
145-
sysobjects o
146-
INNER JOIN sysindexes i ON i.id = o.id
147-
INNER JOIN syscolumns c ON c.id = o.id
146+
sysobjects o noholdlock
147+
INNER JOIN sysindexes i noholdlock ON i.id = o.id
148+
INNER JOIN syscolumns c noholdlock ON c.id = o.id
148149
WHERE
149150
o.type = 'U' -- Apenas tabelas de usuário
150151
AND o.name = '$table' -- Nome da tabela alvo

0 commit comments

Comments
 (0)