Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 порядок блокирования таблиц  [new]
Альба
Member

Откуда:
Сообщений: 3
база ms sql

1.при операции insert into tab1 select * from tab2
каков порядок блокирования таблиц(вначале блокируется tab1, потом tab2 или наоборот)?

2.чем чревато использование кода:

BEGIN TRANSACTION
INSERT INTO tab1 SELECT * FROM tab2 WHERE [mfo] = @mfo and
[acc] = @acc;

DELETE FROM tab2 WHERE [mfo] = @mfo and
[acc] = @acc;
COMMIT TRANSACTION

как он будет реагировать с другими транзакциями(какие предостережения стоит знать)?
может стоит как-то иначе реализовывать данное решение?
17 июл 14, 23:09    [16321675]     Ответить | Цитировать Сообщить модератору
 Re: порядок блокирования таблиц  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37147
Альба
1.при операции insert into tab1 select * from tab2
каков порядок блокирования таблиц(вначале блокируется tab1, потом tab2 или наоборот)?

Есть такая штука - Profiler - она все наглядно покажет.

Альба
BEGIN TRANSACTION
INSERT INTO tab1 SELECT * FROM tab2 WHERE [mfo] = @mfo and
[acc] = @acc;

DELETE FROM tab2 WHERE [mfo] = @mfo and
[acc] = @acc;
COMMIT TRANSACTION


DELETE a
output
  deleted.поле1
  , deleted.поле2
  ...
  , deleted.полеN
into tab1 (
  поле1
  , поле2
  ...
  , полеN
)
FROM tab2  a
WHERE 
  a.[mfo] = @mfo
  and a.[acc] = @acc;
17 июл 14, 23:34    [16321826]     Ответить | Цитировать Сообщить модератору
 Re: порядок блокирования таблиц  [new]
Альба
Member

Откуда:
Сообщений: 3
Гавриленко Сергей Алексеевич, спасибо!
18 июл 14, 10:40    [16323197]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить