|
|
|
Почему не работает "enable novalidate primary key" для имеющихся данны
|
|||
|---|---|---|---|
|
#18+
Oracle Linux 8.1.7.4 EE Код: plaintext 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. Результат выполнения: Код: plaintext 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. Вот тут-то и выясняется, что это гадость не работает. Возникает вопрос - почему??? Кто сталкивался с этим? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2003, 12:03 |
|
||
|
Почему не работает "enable novalidate primary key" для имеющихся данны
|
|||
|---|---|---|---|
|
#18+
Вот в unique deferrable constraint'ах, т.е. с отложенной проверкой целостности требуется создание их по не-уникальному индексу, об этом в доке специально упомянуто. А попробуй и здесь: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2003, 12:22 |
|
||
|
Почему не работает "enable novalidate primary key" для имеющихся данны
|
|||
|---|---|---|---|
|
#18+
Синтаксис не проходит. Видимо это из 9i?: Код: plaintext 1. 2. 3. 4. 5. И вообще странно всё это. В книге по 8i пример даётся - в примере якобы работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2003, 12:35 |
|
||
|
Почему не работает "enable novalidate primary key" для имеющихся данны
|
|||
|---|---|---|---|
|
#18+
сделай в такой последовательности: drop table test_noval; -- создадим таблицу create table test_noval ( test_key NUMBER(16) ); create index pk_test_noval on test_noval(test_key); insert into test_noval values(1); insert into test_noval values(2); insert into test_noval values(3); commit; alter table test_noval add (constraint pk_test_noval primary key (test_key)); alter table test_noval disable primary key; -- вставляем запись с уже имеющимся значением insert into test_noval values(1); commit; -- вот здесь декларируется что использование -- enable novalidate не затрагивает уже имеющиеся данные alter table test_noval enable novalidate primary key; Просто когда ты создаешь констрайнт примари кей он создает свой уникальный индекс только если не находит уже существующего (хотя бы и неуникального индекса). В такой последовательности он "подцепит" неуникальный pk_test_noval. По крайней мере у меня все заработало... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2003, 12:49 |
|
||
|
Почему не работает "enable novalidate primary key" для имеющихся данны
|
|||
|---|---|---|---|
|
#18+
А так? Код: plaintext 1. 2. 3. 4. 5. 6. А что дает этот novalidate- теперь будет уникалость кроме тех, что же были? Кстати, с вышеизложенным у меня прокатило, на 9-ке правда. А я думал, что не совсем беременным, т.е. не совсем уникальным быть нельзя:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2003, 12:52 |
|
||
|
Почему не работает "enable novalidate primary key" для имеющихся данны
|
|||
|---|---|---|---|
|
#18+
Да, если создать не уникальный индекс - это работает. Спасибо за помощь. Однако как вопринимать то что написано в книге, которая называется "Oracle8i CERTIFIED PROFESSIONALтм. Подготовка администраторов БД. Авторы: Джейсон С.Каучмэн Oracle DBA с сертификатом OCP, Ульрике Швин создатель учебного курса Oracle". Книга которая с надписью Oracle Press. Как же после этого быть с верой в человечество?(как говорил Остап Бендер). Хотя у меня возникла мысль - авторы пишут что в экзаменах используются вопросы по 8.1.5, так может это так и было в 8.1.5? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2003, 13:52 |
|
||
|
Почему не работает "enable novalidate primary key" для имеющихся данны
|
|||
|---|---|---|---|
|
#18+
Вряд ли. ИМХО уникальный индекс не допускает не-уникальных значений по своему определению. Видать, они тоже человеки:) Вот есть такое замечание: http://download-west.oracle.com/docs/cd/A87860_01/doc/server.817/a76956/general.htm#12219 Deferrable UNIQUE and PRIMARY keys all must use non-unique indexes. Может есть нечто подобное и про enable novalidate. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2003, 14:13 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=32107836&tid=1991790]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
151ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 433ms |

| 0 / 0 |
