Удалите строки из нескольких таблиц с помощью единого запроса (SQL Express 2005) с ГДЕ условие

В моей программе я сначала проверяю на Терминальный сервер и использую WTSClientHardwareId. Еще MAC-адрес локального ПК должен соответствовать.

, Если Вы действительно хотите использовать список свойств, Вы обеспечили, не учитывают вещи как Name и DriverVersion, Clockspeed, и т.д. так как это возможно зависимо от операционной системы. Попытайтесь произвести ту же информацию об обеих операционных системах и не учтите это, которое отличается между.

20
задан Kevin Hogg 23 June 2014 в 10:24
поделиться

6 ответов

Вы не можете УДАЛИТЬ из нескольких таблиц с помощью одного выражения в SQL 2005 - или любом другом стандартном SQL в этом отношении. Доступ здесь является исключением.

Лучший способ получить этот эффект - указать FOREIGN KEYS между таблицей с триггером ON DELETE .

18
ответ дан 30 November 2019 в 00:40
поделиться

Укажите внешний ключ для таблиц сведений, которые ссылаются на первичный ключ главного устройства, и установите правило удаления = Каскад.

Теперь, когда вы удаляете запись из главной таблицы, все остальные записи таблицы деталей на основе удаление значения первичного ключа строк, будет удалено автоматически.

1
ответ дан 30 November 2019 в 00:40
поделиться

Я не думаю, что вы можете удалять сразу из нескольких таблиц (хотя я не уверен).

Мне кажется, что вам лучше всего этого добиться эффект с отношением, которое каскадно удаляет. Если вы сделаете это, вы сможете удалить запись из одной таблицы, а записи в другой будут автоматически удалены.

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

См. Документ MSDN о каскадных ограничениях ссылочной целостности .

1
ответ дан 30 November 2019 в 00:40
поделиться

Насколько я знаю, вы не можете сделать это в предложении.

Но вы можете создать хранимую процедуру, которая выполняет удаление, которое вы хотите, в любой таблице транзакции, что почти то же самое.

2
ответ дан 30 November 2019 в 00:40
поделиться

Это невозможно сделать в одном операторе. Вам нужно будет использовать 2 утверждения

DELETE FROM TB1 WHERE PersonID = '2';
DELETE FROM TB2 WHERE PersonID = '2';
3
ответ дан 30 November 2019 в 00:40
поделиться

Почему вы не используете DELETE CASCADE FK ?

11
ответ дан 30 November 2019 в 00:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: