|
ограничение FK
|
|||
---|---|---|---|
#18+
в таблице T1 хранится справочник с историей, таблица T2 ссылается на T1 с помощью FK T2.that_Id = T1.this_Id. надо ограничить допустимые значения FK набором, подпадающим под условие T1.this_Id = T1.root_Id или же просто всеми вариантами T1.root_Id, но root_Id в T1 не уникально. возможно это как-то сделать не триггером, а констрейном? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2010, 16:45 |
|
ограничение FK
|
|||
---|---|---|---|
#18+
Для констрейнта нужен ключ, так что никак. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2010, 16:46 |
|
ограничение FK
|
|||
---|---|---|---|
#18+
спасибо придется либо выносить историю из справочников в отдельные таблицы, либо вешать на все таблицы с такими FK триггеры, которые будут обрабатывать все имеющиеся FK. первое выглядит заметно лучше ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2010, 16:54 |
|
ограничение FK
|
|||
---|---|---|---|
#18+
Shakill, Если я правильно понимаю, сделайте констрейнт: Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2010, 17:04 |
|
ограничение FK
|
|||
---|---|---|---|
#18+
RootID в таком случае правильнее называть ParentID... Ведь дерево описываем, да? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2010, 17:05 |
|
ограничение FK
|
|||
---|---|---|---|
#18+
лоллShakill, Если я правильно понимаю, сделайте констрейнт: Код: plaintext 1.
И получит сообщение: Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2010, 17:10 |
|
ограничение FK
|
|||
---|---|---|---|
#18+
лолл, все наоборот, в T1 уже есть FK сам на себя, т.е. в каждой записи истории root_Id ссылается на this_Id актуальной записи. у актуальной записи root_Id = this_Id, то есть дерево получается не очень ветвистое ) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2010, 17:12 |
|
ограничение FK
|
|||
---|---|---|---|
#18+
Гавриленко Сергей Алексеевич, Наверное мы друг дуга не понимаем... Код: plaintext 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2010, 17:14 |
|
ограничение FK
|
|||
---|---|---|---|
#18+
лолл, ага, так оно и выглядит. хотел ограничить ссылки из внешних таблиц сюда списком Id актуальных записей. не вышло ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2010, 17:15 |
|
ограничение FK
|
|||
---|---|---|---|
#18+
Shakill, в смысле, почему не вышло? во внешних таблицах ссылки на ID должны идти, а не на ParentID... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2010, 17:24 |
|
ограничение FK
|
|||
---|---|---|---|
#18+
лолл, в том смысле, что в справочнике Id есть у всех записей - и актуальных, и исторических. хотел со стороны базы установить ограничение, что в остальных таблицах как FK будут использоваться только Id актуальных записей, т.е. подмножество, попавшее в root_Id ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2010, 17:31 |
|
ограничение FK
|
|||
---|---|---|---|
#18+
Shakill, Есть способ ограничить это множество через check constraint: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2010, 17:46 |
|
ограничение FK
|
|||
---|---|---|---|
#18+
лолл, а вариант, спасибо. функцию надо будет для каждого справочника копировать, но это уже не ворох разных триггеров на все журналы Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2010, 18:05 |
|
ограничение FK
|
|||
---|---|---|---|
#18+
только у вас EXISTS(SELECT * FROM TreeNodes WHERE ParendID = @Id) уже обеспечено ограничением CONSTRAINT FK_TreeNodes_ParentID FOREIGN KEY (ParentID) REFERENCES TreeNodes (ID) Так что в данном контексте такая функция не нужна. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2010, 18:08 |
|
ограничение FK
|
|||
---|---|---|---|
#18+
видимо к концу рабдня мозги вскипели =) увидел, что вы проверяете существование ветки, не относящееся к корню. т.е. данная функция отметает все корневые записи дерева (у которых ParentID is null)... но это ли нужно на самом деле? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2010, 18:13 |
|
ограничение FK
|
|||
---|---|---|---|
#18+
лолл, всё-таки нужна. не все ID являются еще и ParentID => не все могут быть использованы в сторонних ссылках, об этом речь а у корневых записей ParentID = ID, я в начале писал ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2010, 18:14 |
|
ограничение FK
|
|||
---|---|---|---|
#18+
Shakillфункцию надо будет для каждого справочника копировать, но это уже не ворох разных триггеров на все журналы Можно и одной обойтись в принципе: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
как-то так... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2010, 18:30 |
|
|
start [/forum/topic.php?fid=46&msg=36678938&tid=1726334]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
26ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 261ms |
total: | 391ms |
0 / 0 |