|
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
|
|||
---|---|---|---|
#18+
Можно ли как-то в триггере "до обновления" надежно проверить (с учетом всевозможных режимов и сценариев транзакций) и без изменения значения в индексированном поле с последующей ловлей исключения в WHEN при ссылающемся внешнем ключе "ON UPDATE NO ACTION", существует ли ссылка значения внешнего ключа из другой таблицы на значение в индексированном поле? Очень не хочется для подобной проверки дергать генератор, без толку увеличивая, тем самым, его значение. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2017, 15:40 |
|
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
|
|||
---|---|---|---|
#18+
Hello, Rdb Dev! You wrote on 20 января 2017 г. 15:42:44: Rdb Dev> (с учетом всевозможных режимов и сценариев транзакций)переходи на M$ SQL Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2017, 15:43 |
|
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
|
|||
---|---|---|---|
#18+
Мимопроходящий, зачем? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2017, 15:45 |
|
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
|
|||
---|---|---|---|
#18+
rdb_devзачем? Затем, что только там это возможно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2017, 16:29 |
|
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
|
|||
---|---|---|---|
#18+
rdb_dev, что ты хочешь получить и причём тут генераторы ? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2017, 17:03 |
|
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
|
|||
---|---|---|---|
#18+
hvlad, я же, вроде, написал что хочу получить. Через генератор я могу, к примеру, получить некое уникальное значение для поля первичного ключа и в триггере "до обновления" изменить значение в поле первичного ключа на новое. При условии, что на это поле есть внешние ключи ON UPDATE NO ACTION, попытка изменить значение поля приведет к исключению, которое можно обработать. Это как вариант реализации. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2017, 02:39 |
|
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
|
|||
---|---|---|---|
#18+
rdb_devhvlad, я же, вроде, написал что хочу получить. Через генератор я могу, к примеру, получить некое уникальное значение для поля первичного ключа и в триггере "до обновления" изменить значение в поле первичного ключа на новое. При условии, что на это поле есть внешние ключи ON UPDATE NO ACTION, попытка изменить значение поля приведет к исключению, которое можно обработать. Это как вариант реализации. А нельзя ли разбить одну длинную мысль на несколько более коротких? Непонятно ничего. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2017, 03:24 |
|
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
|
|||
---|---|---|---|
#18+
чччДА нельзя ли разбить одну длинную мысль на несколько более коротких? Непонятно ничего.Ok. попробую объяснить "на пальцах" и абстрактно, чтобы не отвлекать мысль на постороннюю конкретику. Допустим, имеется некий тип и у этого типа есть атрибуты. Также имеется экземпляр типа и значения атрибутов для экземпляра этого типа. Очевидно, что таблица значений атрибутов имеет два FK - на таблицу атрибутов и на таблицу экземпляров. В свою очередь, таблицы атрибутов и экземпляров имеют FK на таблицу типов. Теперь представим случай, когда кто-то меняет привязку атрибута от одного типа к другому и нам необходимо в триггере "до обновления" определить этот момент, чтобы предотвратить изменение выдачей исключения, если у атрибута уже есть значение, так как значение имеет FK не только на атрибут, но и на тип, уже не совпадающий с типом, к которому привязан атрибут. Несовпадение типа принадлежности атрибута и типа принадлежности экземпляра для одного и того же значения приводит к противоречивости данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2017, 04:11 |
|
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
|
|||
---|---|---|---|
#18+
rdb_devтаблица значений атрибутов имеет два FK - на таблицу атрибутовИ этот FK - не влючает в себя ID типа ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2017, 12:09 |
|
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
|
|||
---|---|---|---|
#18+
hvlad, предлагаешь тащить в таблицу значений идентификатор типа? Можно, конечно... но хотелось бы обойтись без этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2017, 15:53 |
|
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
|
|||
---|---|---|---|
#18+
rdb_dev, Те, кто уже решал такую задачу, решили всё-таки идентификатор типа таскать везде за собой. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2017, 09:33 |
|
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
|
|||
---|---|---|---|
#18+
WildSery, понятно, спасибо! Это также оптимальное решение, если требуется ON UPDATE CASCADE. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2017, 09:48 |
|
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
|
|||
---|---|---|---|
#18+
WildSery, малость прикинул и решил, что "оптимальности" не получается, так как для "таблицы значений" придется делать два FK, включающих поле типа и при каскадном изменении поля типа по одной из "веток" всегда буду получать исключение по ограничению второго FK. :( ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2017, 10:15 |
|
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
|
|||
---|---|---|---|
#18+
rdb_dev, что-то я плохо понимаю о чём ты. Выложи предполагаемый DDL таблиц. И что ты там контролировать собрался ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2017, 10:20 |
|
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
|
|||
---|---|---|---|
#18+
Не обязательно навешивать туда FK ещё один, я с точки зрения целостности "ссылки" рассуждал. Значение содержит и тип, и атрибут, что логично. Не совсем ясно, зачем отслеживать перевешивание атрибута, "есть ли уже значения атрибута для этого типа". Почему нельзя просто запретить изменение типа для атрибута? Ты хочешь создать атрибут "для какого-то типа", а потом его уже цеплять куда следует? В этом смысл? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2017, 10:39 |
|
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
|
|||
---|---|---|---|
#18+
Симонов Денис, в соответствии с условным описанием и предложенным вариантом, это выглядит примерно так: пардон муа за квотирование идентификаторов Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55.
При изменении "type_id" в таблице "type_attrs" или "obj" я всегда буду получать исключение по ограничению целостности "obj_value__fk__type_attrs" или "obj_value__fk__obj", если в таблице "obj_value" находится соответствующая запись. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2017, 10:55 |
|
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
|
|||
---|---|---|---|
#18+
В таблице "obj" опечатался с типом поля "name". ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2017, 10:57 |
|
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
|
|||
---|---|---|---|
#18+
rdb_dev, По-моему, таблицы составлены правильно. Только мне не понятно - зачем разрешать изменение в таблице "type_attr" поля "type_id"? У Вас атрибуты привязаны к объекту. Как атрибутов можно перевязать к другому? Нет, теоретически, через запрос можно, конечно. А как интерфейсно? На экране есть список объектов и рядом список его атрибутов. Зачем позволять атрибутам менять объект? Непонятно. Наверно, можно только добавлять или удалять. Вот при удалении должен работать форейн ключ. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2017, 14:37 |
|
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
|
|||
---|---|---|---|
#18+
KreatorXXIЗачем позволять атрибутам менять объект? Атрибут "длинна", объект №1 = пиписька, объект №2 = ЗП. Правда rdb_dev не вкуривает, что длинна пиписьки не равно длинна ЗП. И пофигу, что буковки в названии атрибута одинаковые. Физический смысл - разный. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2017, 15:53 |
|
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
|
|||
---|---|---|---|
#18+
У меня еще одна идейка оформилась, которую набросал, но еще не проверял. Не буду сейчас расписывать всевозможные варианты того, как я собираюсь "это" использовать (на описание уйдет немало времени), просто гляньте, плз, кому не влом. Выглядит, конечно, пахабно, но тем не менее... Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2017, 16:02 |
|
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
|
|||
---|---|---|---|
#18+
Di_LIne, Не надо чепуху писать. У него атрибут привязан к конкретному "типу" (читай - набору атрибутов), и длину твоей ЗП посчитают отдельно. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2017, 16:04 |
|
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
|
|||
---|---|---|---|
#18+
rdb_dev, Читать пока лень, ведь ты так и не ответил, почему в твоей конструкции вообще возможно менять тип атрибута. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2017, 16:05 |
|
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
|
|||
---|---|---|---|
#18+
rdb_dev, результат "x" процедур "type_attrs__set" и "obj__set" предполагается, должен показывать наличие/отсутствие реферальных значений внешних ключей и позволять использующему его алгоритму клиента или другой ХП принимать дальнейшие решения на основании полученных данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2017, 16:06 |
|
Вопрос про проверку наличия ссылки по FK на значение индексированного поля
|
|||
---|---|---|---|
#18+
WildSery, очень долго расписывать что да как... Постараюсь набросать пару вариантов, когда доберусь до дома и если не забуду. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2017, 16:08 |
|
|
start [/forum/topic.php?fid=40&fpage=49&tid=1561751]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 282ms |
total: | 433ms |
0 / 0 |