Триггер

Indi92
Дата: 27.04.2015 11:15:52
Здравствуйте) Помогите написать ограничение(процедуру или триггер), чтобы в таблице "Анкеты" был либо Id_сотрудника, либо Id_соискателя.
Winnipuh
Дата: 27.04.2015 11:17:38
1. покажите ваш вариант, обсудим
2. что значит "либо, либо"?
iap
Дата: 27.04.2015 11:22:43
Indi92,

Плохо спроектировано.
Лучше сделать одну таблицу и для сотрудников, и для соискателей с полем "IsSotr".
Для соискателя ссылка на должность - NULL.
Хотя, здесь тоже неточность. Ибо должностей одновременно может быть сколько угодно.
Значит, нужна таблица связок [Сотрудник]-[Должность] с признаком "Основное место работы"
Соответственно, в анкете будет только одна ссылка на объединённую таблицу.
Winnipuh
Дата: 27.04.2015 11:27:02
iap
Indi92,

Плохо спроектировано.
Лучше сделать одну таблицу и для сотрудников, и для соискателей с полем "IsSotr".
Для соискателя ссылка на должность - NULL.
Хотя, здесь тоже неточность. Ибо должностей одновременно может быть сколько угодно.
Значит, нужна таблица связок [Сотрудник]-[Должность] с признаком "Основное место работы"
Соответственно, в анкете будет только одна ссылка на объединённую таблицу.


это уже "разрыв шаблона"
iap
Дата: 27.04.2015 11:31:52
Winnipuh
iap
Indi92,

Плохо спроектировано.
Лучше сделать одну таблицу и для сотрудников, и для соискателей с полем "IsSotr".
Для соискателя ссылка на должность - NULL.
Хотя, здесь тоже неточность. Ибо должностей одновременно может быть сколько угодно.
Значит, нужна таблица связок [Сотрудник]-[Должность] с признаком "Основное место работы"
Соответственно, в анкете будет только одна ссылка на объединённую таблицу.


это уже "разрыв шаблона"
Что не так?
LexusR
Дата: 27.04.2015 11:37:48
ISNULL(IdSotr,0) ^ ISNULL(IdSoik,0) = 0
LexusR
Дата: 27.04.2015 11:38:38
сорри

ISNULL(IdSotr,0) ^ ISNULL(IdSoik,0) = 1
o-o
Дата: 27.04.2015 11:41:58
LexusR
сорри
ISNULL(IdSotr,0) ^ ISNULL(IdSoik,0) = 1

все ок, только ему еще надо проверять, что там не левое значение вставлено,
а ПК из той или другой таблицы
Winnipuh
Дата: 27.04.2015 11:48:27
iap
Winnipuh
пропущено...


это уже "разрыв шаблона"
Что не так?


да наоборот, всё так, но ТС хотелось бы по-быстрому триггер и сдать работу "преподу"
LexusR
Дата: 27.04.2015 11:50:31
o-o
LexusR
сорри
ISNULL(IdSotr,0) ^ ISNULL(IdSoik,0) = 1

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

так там судя по картинку foreign key