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

Откуда: Минск
Сообщений: 407
Есть бд SQL Express 2005
Есть таблица1 с индексами и названиями валюты (Евро,Доллар и т.п.)
Есть таблица2 с курсами валют с колонками Валюта1 (индекс валюты с которой переводится) , Валюта2 (индекс валюты в которую переводится Валюта1) и колонка Курс
Суть в том чтобы удалить определённую валюту из таблицы1 и таблицы2.
Если попытаться удалить запись из таблицы1 или таблицы2 то возможно выскочит ошибка о том что данная запись используется и её не удалить. Как можно проверить используется ли где то еще сие данные но так чтобы не изменять эти самые данные? Спасибо
23 сен 13, 14:24    [14872801]     Ответить | Цитировать Сообщить модератору
 Re: Взаимосвязь таблиц  [new]
Slash232
Member

Откуда: Минск
Сообщений: 407
И второй вопрос как удалить данные из двух этих таблиц одним запросом? Если можно пример. Третий вопрос: Возможно ли это с учётом того что данные таблицы1 используются в таблице2?
23 сен 13, 14:25    [14872812]     Ответить | Цитировать Сообщить модератору
 Re: Взаимосвязь таблиц  [new]
Glory
Member

Откуда:
Сообщений: 104760
Slash232
Если попытаться удалить запись из таблицы1 или таблицы2 то возможно выскочит ошибка о том что данная запись используется и её не удалить.

Что значит "возможно" ?
Если между таблицами нет FK constraint, то ничего не "выскочит"

Slash232
Как можно проверить используется ли где то еще сие данные но так чтобы не изменять эти самые данные?

Запросом - как же еще
Slash232
И второй вопрос как удалить данные из двух этих таблиц одним запросом?

Одним - нельзя
23 сен 13, 14:29    [14872848]     Ответить | Цитировать Сообщить модератору
 Re: Взаимосвязь таблиц  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
используйте транзакцию с двумя запросами на удаление, тут либо транзакция выполнится целиком, либо не выполниться.
23 сен 13, 15:08    [14873188]     Ответить | Цитировать Сообщить модератору
 Re: Взаимосвязь таблиц  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34619
автор
Как можно проверить используется ли где то еще сие данные но так чтобы не изменять эти самые данные?



select 1 from таблица2 where Валюта1 = @валюта
select 1 from таблица2 where Валюта2 = @валюта


автор
И второй вопрос как удалить данные из двух этих таблиц одним запросом?


Одним "запросом" никак.
одним батчем --

begin tran
delete from таблица2 where Валюта1 = @валюта
delete from таблица2 where Валюта2 = @валюта
delete from таблица1 where Валюта = @валюта
commit
23 сен 13, 19:59    [14874565]     Ответить | Цитировать Сообщить модератору
 Re: Взаимосвязь таблиц  [new]
Crimzic
Member

Откуда: Sydney
Сообщений: 59
Slash232
И второй вопрос как удалить данные из двух этих таблиц одним запросом? Если можно пример. Третий вопрос: Возможно ли это с учётом того что данные таблицы1 используются в таблице2?

Переделать FK в ON DELETE CASCADE.
Но лучше тремя запросами, как тут уже писали.
24 сен 13, 04:06    [14875516]     Ответить | Цитировать Сообщить модератору
 Re: Взаимосвязь таблиц  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Crimzic
Переделать FK в ON DELETE CASCADE.

Ничего не выйдет, ибо указать ON DELETE CASCADE в данной схеме нельзя из-за ошибки 1785 (multiple cascade paths).
24 сен 13, 09:48    [14875878]     Ответить | Цитировать Сообщить модератору
 Re: Взаимосвязь таблиц  [new]
Crimzic
Member

Откуда: Sydney
Сообщений: 59
Гость333
Crimzic
Переделать FK в ON DELETE CASCADE.

Ничего не выйдет, ибо указать ON DELETE CASCADE в данной схеме нельзя из-за ошибки 1785 (multiple cascade paths).

Точно! Спасибо, на это я не обратил внимания.
24 сен 13, 10:38    [14876129]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить