![]() |
|
Модераторы: gambit |
![]()
|
|
| Killerman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 26.10.2007 Репутация: нет Всего: нет |
Во время создания БД возникла проблема, которую я не могу понять как решить.
В БД есть 2-ве таблицы: Remonti(Nremonta, ClientID, CarID,State_r) :: Первичный ключ Nremonta и Сlient(Nremonta_c,ClientID_c, CarID_c, dateRemonta). Первичный ключ Nremonta_c После окончания ремонта данные из таблицы ремонтов записываются в данные клиентов. Client.Nremonta_c ссылается на Remonti.Nremonta. И поэтому в таблице клиентов не может быть записей с номерами ремонтов, которые не соответствуют номерам ремонтов в таблице ремонтов. Но поскольку ClientID_c и CarID_c из таблицы клиентов никак не привязаны к Nremonta и ClientID из таблицы ремонта, то может возникнуть несоответствие, к примеру при одинаковых Номерах ремонта в обеих таблицах будут разные значения Идов клиентов и Номеров машин там и там. Я думал создать триггер для таблицы Клиентов, чтобы при добавлении в таблицу клиентов, проверять соответствуют ли их Ид идам из таблицы ремонтов, где номера ремонтов совпадают там и там. Если разные, то отменить добавление в таблицу клиентов и выдать ошубку. Как это можно сделать? Это сообщение отредактировал(а) Killerman - 9.3.2008, 18:30 |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 8 Всего: 49 |
Killerman, простой выход - не копируй ClientID и CarID из первой таблицы во вторую. Ты все равно можешь в любой момент сходить по ссылке из второй таблицы в первую и получить нужные значения.
|
|||
|
||||
| Killerman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 26.10.2007 Репутация: нет Всего: нет |
Но мне нада, так как потом нада будет из клиентов выбрать машины, которые ремонтировались и посмотреть на их гарантии на детали. Хотя по логике можно обратиться ктаблице ремонтов, но у этих таблиц разные предназначения и права доступа.
Это сообщение отредактировал(а) Killerman - 9.3.2008, 19:46 |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 8 Всего: 49 |
Killerman если предназначения таблиц мешают нормально писать приложение, то их нужно срочно менять
Вот пример прямо из msdn, переделай его для своих таблиц:
|
|||
|
||||
| Killerman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 26.10.2007 Репутация: нет Всего: нет |
Вот такой триггер. Но он не работает. Тоесть в Клиентов всеравно добавляются строки с тем же номером ремонта что и в таблице ремонта, но с другими ClientID и/или CarID. Ограничение не срабатывает. Это сообщение отредактировал(а) Killerman - 9.3.2008, 20:30 |
|||
|
||||
| Killerman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 26.10.2007 Репутация: нет Всего: нет |
Все работает.
Пасиба. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |