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

Откуда:
Сообщений: 3
В нашем проекте мы используем ORM создающий для каждого дочернего класса новую таблицу имеющую общий ключ с базовой.
Пример. У меня есть классы User и ColoredUser. ColorodUser наследован от User.
В БД созданы таблицы User и ColoredUser.

User
id uniqueidentifier
name varchar(max)

ColoredUser
id uniqueidentifier
color varchar(max)

ColoredUser связан с User по ключу ID. То есть при создании нового ColoredUser в БД появятся две записи - в таблицу User занесется имя, а в таблицу ColoredUser - цвет. ID у обоих записей будет одинаковый. Сейчас столкнулся с проблемой, что при удалении записи из таблицы ColoredUser запись в таблице User остается, что нарушает целостность БД. Как можно написать constraint который бы не давал удалять записи только из одной таблицы и требовал удаления данных из обоих таблиц? И решается ли это с помощью constraint?
12 апр 12, 11:56    [12404693]     Ответить | Цитировать Сообщить модератору
 Re: Создание constraint для сохранения целостности БД  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Триггер. Можно сделать два констрейнта, но мне почему-то кажется, что после этого ни в одну из таблиц ничего добавить не выйдет.

Оффтопик - а вы уверены, что имя пользователя и имя цвета у вас могут достигать 2 Гб?
12 апр 12, 12:01    [12404727]     Ответить | Цитировать Сообщить модератору
 Re: Создание constraint для сохранения целостности БД  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
А FOREIGN KEY NO ACTION разве не подходит?
12 апр 12, 12:13    [12404825]     Ответить | Цитировать Сообщить модератору
 Re: Создание constraint для сохранения целостности БД  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
steamru,

Не решается. И если Вы занялись наследованием в реляционной СУБД, то и методы (хп) удаления наследников, которые бы вызывал метод (хп) удаления родителя, Вам тоже придеться написать самому.
12 апр 12, 13:55    [12405670]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить