Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удаление записи из таблицы 
:(
    Опции темы
VladimirPivovar
Дата 1.5.2010, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 1.5.2010

Репутация: нет
Всего: нет



Вот структура моей БД Вокзал(сразу извиняюсь за русские названия):

Код

CREATE TABLE [dbo].[Поезд] (
    [NПоезда] [varchar] (6) PRIMARY KEY ,
    [НазваниеПоезда] [varchar] (30)  ,
    [ДатаНачалаСледования] [datetime] NULL ,
    [ДатаОкончанияСледования] [datetime] NULL 
) 
GO

CREATE TABLE [dbo].[ПутьСледования] (
    [ID] [int] IDENTITY (1, 1) PRIMARY KEY ,
    [NПоездаПуть] [varchar] (6)  ,
    [СтанцияID] [int] NOT NULL ,
    [ВремяПрибытия] [datetime] NULL ,
    [ВремяОтбытия] [datetime] NULL 
) 
GO

CREATE TABLE [dbo].[Станция] (
    [ID] [int] IDENTITY (1, 1) PRIMARY KEY ,
    [НазваниеСтанции] [varchar] (30)  ,
    [Страна] [varchar] (15)  ,
    [Область] [varchar] (30)  
) 
GO

ALTER TABLE [dbo].[ПутьСледования] ADD 
    CONSTRAINT [FK_ПутьСледования_Поезд] FOREIGN KEY 
    (
        [NПоездаПуть]
    ) REFERENCES [dbo].[Поезд] (
        [NПоезда]
    ) ON UPDATE CASCADE ,
    CONSTRAINT [FK_ПутьСледования_Станция] FOREIGN KEY 
    (
        [СтанцияID]
    ) REFERENCES [dbo].[Станция] (
        [ID]
    ) ON UPDATE CASCADE 
GO


При попытке удаления одной станции из таблицы Станция, выскакивает ошибка: Delete statement conflicted with column reference constraint 'FK_ПутьСледования_Станция' . The conflict occured in database 'Вокзал', table 'Путь следования' ,column 'СтанцияID' . 

Допустим был сформирован путь следования поезда по станциям в таблице ПутьСледования, а тут удаляется Станция, которая сходит в путь следования поезда.... может убрать ограничение на целостность?
Как поступать в такой ситуации?
Спасибо!
PM MAIL   Вверх
DarkProg
Дата 1.5.2010, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: нет
Всего: 19



Цитата(VladimirPivovar @  1.5.2010,  09:36 Найти цитируемый пост)
Допустим был сформирован путь следования поезда по станциям в таблице ПутьСледования, а тут удаляется Станция, которая сходит в путь следования поезда.... может убрать ограничение на целостность?

Лучше не убирать ограничение на целостность, хотя я не уверен.
В общем как вариант сначала проверьте есть ли эта станция во всех путях следования, если где-то есть то убераете её из пути, а потом удаляете саму станцию. IMHO  думаю так.


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
Akina
Дата 2.5.2010, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 25
Всего: 454



ON DELETE CASCADE для кого придумано?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Zloxa
Дата 12.5.2010, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 10
Всего: 161



Цитата(VladimirPivovar @  1.5.2010,  09:36 Найти цитируемый пост)
Как поступать в такой ситуации?

Смотря что именно вы хотите сделать.
Если вам надо во что бы то ни стало удалить станцию, при этом оставив путь следования, то надо убрать FK
Если вам надо во что бы то ни стало удалить станцию, но сохранить структуру бд, то надо убрать маршрут следования.
Как поступить, наверное, лучше спросить у того, кто Вам дал такое задание, потому что только он знает как правильно.  smile 


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
kobra
Дата 13.5.2010, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 15.6.2005
Где: Грузия, Тбилиси

Репутация: 5
Всего: 9



Цитата(Zloxa @  12.5.2010,  15:27 Найти цитируемый пост)
Если вам надо во что бы то ни стало удалить станцию, при этом оставив путь следования, то надо убрать FK
Если вам надо во что бы то ни стало удалить станцию, но сохранить структуру бд, то надо убрать маршрут следования.

переопределить маршрут и удалить станцию
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0464 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.