Таблица уже используется?

Как определить, используется ли таблица в SQL (в базе данных любого типа)? если кто-то уже использует его, или он «открыт», значит, он используется.

Есть много видов «использования». Вы имеете в виду, что к таблице обращается программа (DML = вставка, обновление, удаление, выбор)? Вы имеете в виду, что структура таблицы модифицируется (DDL)? Вы имеете в виду, что на таблицу ссылается оператор SQL где-то в «активном» приложении?

Rob Williams 02.12.2008 03:27

Да, программа доступна для вставки, обновления, удаления, выбора или простой НАЧАЛО ТРАНЗАКЦИИ (в MS SQL Server)

igorgue 02.12.2008 07:02
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
2
1 449
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Проверьте, нет ли открытых замков на столе.

Взгляните на таблицу syslockinfo.

Спасибо, что привело меня к правильному ответу: msdn.microsoft.com/en-us/library/ms190345.aspx Для MS SQL Server

igorgue 02.12.2008 07:03

Вообще говоря, правильный способ узнать, использует ли кто-то еще эту таблицу и помешает ли вам делать все, что вы хотите, - это попытаться сделать то, что вы хотите, и проверить, не удается ли это сделать. Если в сообщении об ошибке указано «неисключительный доступ» или «таблица в использовании» или что-то подобное, значит, вы ошиблись.

Если ваша СУБД поддерживает блокировку таблицы, вы можете применить блокировку к таблице, а затем выполнить последовательность операций, но вы будете препятствовать другим людям, которые в противном случае могли бы попытаться ее использовать.

Обратите внимание, что проверка таблицы блокировок (например, syslockinfo) является специфичной для СУБД и ненадежна - это приводит к проблемам с TOCTOU (время проверки, время использования).

Ответ принят как подходящий

На самом деле это даст вам лучший результат:

select spid
    from master..sysprocesses
    where dbid = db_id('Works') and spid <> @@spid

Другие вопросы по теме