|
Реализовать constraint
|
|||
---|---|---|---|
#18+
Всем привет, подскажите следующее, есть таблица master - содержащее уникальный индекс на два поля, есть таблица detail - должна содержать внешний ключ на эти уникальные поля таблицы master Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Собственно вопрос, каким образом можно выкрутиться в данном случаи, только триггер на detail? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2021, 15:49 |
|
Реализовать constraint
|
|||
---|---|---|---|
#18+
wsnet есть таблица master - содержащее уникальный индекс на два поля Нет в этой таблице уникального индекса на два поля. Об этом прямо и говорит ошибка: ORA-02270 no matching primary or unique key for then column list Вы это хотите сделать? Нестандартный подход ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2021, 15:54 |
|
Реализовать constraint
|
|||
---|---|---|---|
#18+
AlexFF__|, хорошо, это ясно, но вопрос в ином был, как выкрутиться? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2021, 16:11 |
|
Реализовать constraint
|
|||
---|---|---|---|
#18+
AlexFF__| Нет в этой таблице уникального индекса на два поля. Об этом прямо и говорит ошибка: ORA-02270 no matching primary or unique key for then column list ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2021, 16:12 |
|
Реализовать constraint
|
|||
---|---|---|---|
#18+
wsnet каким образом можно выкрутиться в данном случаи ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2021, 16:13 |
|
Реализовать constraint
|
|||
---|---|---|---|
#18+
Как Elic намекнул + invisible: Код: 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.
Ну и в чем сакральный смысл менять a на b (decode(a,null,null,b)) если a not null и b на a (decode(b,null,null,a)) если b not null? SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2021, 16:34 |
|
Реализовать constraint
|
|||
---|---|---|---|
#18+
SY, Elic спасибо. SY Как Elic намекнул + invisible: Ну и в чем сакральный смысл менять a на b (decode(a,null,null,b)) если a not null и b на a (decode(b,null,null,a)) если b not null? SY. SY, прибегнуть пришлось из-за того, что изначально уникальным ключом было одно поле, а не две: Код: 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.
Быть может Oracle позволяет по-иному выйти из ситуации? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2021, 17:15 |
|
Реализовать constraint
|
|||
---|---|---|---|
#18+
SY Как Elic намекнул + invisible: Код: 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.
Ну и в чем сакральный смысл менять a на b (decode(a,null,null,b)) если a not null и b на a (decode(b,null,null,a)) если b not null? SY. Увы, моя версия: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2021, 17:23 |
|
Реализовать constraint
|
|||
---|---|---|---|
#18+
wsnet Увы, моя версия: Но версия - гуано. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2021, 18:17 |
|
Реализовать constraint
|
|||
---|---|---|---|
#18+
wsnet Увы, моя версия: Ну убери invisible (правда придется указывать список полей там где раньше был *): Код: 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.
Но главное: в чем сакральный смысл менять a на b (decode(a,null,null,b)) если a not null и b на a (decode(b,null,null,a)) если b not null? SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2021, 18:34 |
|
Реализовать constraint
|
|||
---|---|---|---|
#18+
SY, вот это и не весьма устраивает нет invisible, Вопрос а кроме виртуальных столбцов есть ли альтернативные варианты? Триггер, например? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2021, 18:45 |
|
Реализовать constraint
|
|||
---|---|---|---|
#18+
wsnetкаким образом можно выкрутиться в данном случаи, только триггер на detail? Ты создавай не уникальный индекс, а unique constraint. Оно позволяет null-ы и удовлетворяет foreign key. PS: А с совпадением значений второго поля придётся разбираться бизнес-логикой. Ну или хотя бы бытовой: на какую из двух записей должна ссылаться запись в detail (null, 1)? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2021, 18:52 |
|
Реализовать constraint
|
|||
---|---|---|---|
#18+
wsnet Вопрос а кроме виртуальных столбцов есть ли альтернативные варианты? Триггер, например? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2021, 19:10 |
|
Реализовать constraint
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov wsnetкаким образом можно выкрутиться в данном случаи, только триггер на detail? Ты создавай не уникальный индекс, а unique constraint. Оно позволяет null-ы и удовлетворяет foreign key. PS: А с совпадением значений второго поля придётся разбираться бизнес-логикой. Ну или хотя бы бытовой: на какую из двух записей должна ссылаться запись в detail (null, 1)? Не очень ясно как в данном случаи мне поможет unique constraint? Ведь таблица заполнена изначально данными. Здесь указывал на это 22284458 Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2021, 19:11 |
|
Реализовать constraint
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Ты создавай не уникальный индекс, а unique constraint. Оно позволяет null-ы и ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2021, 19:11 |
|
Реализовать constraint
|
|||
---|---|---|---|
#18+
Elic wsnet Вопрос а кроме виртуальных столбцов есть ли альтернативные варианты? Триггер, например? Я не очень понял, а если все же вариант с триггером простейшим применить: Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2021, 19:29 |
|
Реализовать constraint
|
|||
---|---|---|---|
#18+
wsnetНе очень ясно как в данном случаи мне поможет unique constraint? Ведь таблица заполнена изначально данными. При таких данных тебе уже ничто не поможет. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2021, 19:31 |
|
Реализовать constraint
|
|||
---|---|---|---|
#18+
wsnet Триггер, например? Решение триггером потребует сериализации на уровне таблицы. UK/FK сериализует на уровне строки дубликата/родителя. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2021, 19:33 |
|
Реализовать constraint
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, пожалуйста почитайте топик еще раз, не надо писать чтобы написать. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2021, 19:34 |
|
Реализовать constraint
|
|||
---|---|---|---|
#18+
SY, хорошо, вы имейте ввиду многопользовательскую работу с таблицей? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2021, 19:36 |
|
Реализовать constraint
|
|||
---|---|---|---|
#18+
wsnetinsert into softmaster.detail(a, b)values (11,2) * ERRORat line1: ORA-20001: Не найдена запись в master ORA-06512:at "SOFTMASTER.INS_UPD_DETAIL", line16 ORA-04088: error during executionof trigger 'SOFTMASTER.INS_UPD_DETAIL' А теперь попробуй с (null,1). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2021, 19:38 |
|
Реализовать constraint
|
|||
---|---|---|---|
#18+
wsnet SY, хорошо, вы имейте ввиду многопользовательскую работу с таблицей? Да. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2021, 19:39 |
|
Реализовать constraint
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, попробую, но пока задача этого не предполагает: Код: plsql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2021, 19:48 |
|
Реализовать constraint
|
|||
---|---|---|---|
#18+
wsnet Я не очень понял, а если все же вариант с триггером простейшим применить: ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2021, 19:49 |
|
Реализовать constraint
|
|||
---|---|---|---|
#18+
Elic wsnet Я не очень понял, а если все же вариант с триггером простейшим применить: Elic, скажу так тебе, в таблицу softmaster.master добавляет записи один человек (очень редко с ней работает), с таблицей softmaster.detail могут работать одновременно несколько человек по добавлению записей. Как думаешь при таких данных нужна она или же обойдемся триггером? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2021, 19:59 |
|
|
start [/forum/topic.php?fid=52&fpage=25&tid=1880415]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
29ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
others: | 253ms |
total: | 393ms |
0 / 0 |