|
|
|
NULL Шрёдингера
|
|||
|---|---|---|---|
|
#18+
Всем привет. Мне кажется, что я видел подобную тему, но ни автора, ни ключевых слов подобрать не могу. Ерунда какая-то случилась: CREATE TABLE x ( ... GENERATE_TOKEN VARCHAR2(1 BYTE) DEFAULT ON NULL 'N' NOT NULL, ...); SQL> ALTER TABLE x MODIFY generate_token NULL; ALTER TABLE x MODIFY generate_token NULL * ERROR at line 1: ORA-01451: column to be modified to NULL cannot be modified to NULL SQL> ALTER TABLE x MODIFY generate_token NOT NULL; ALTER TABLE x MODIFY generate_token NOT NULL * ERROR at line 1: ORA-01442: column to be modified to NOT NULL is already NOT NULL SQL> SELECT COUNT(*) FROM x WHERE generate_token IS NULL; COUNT(*) ---------- 0 SQL> SELECT DISTINCT DUMP(generate_token) FROM x; DUMP(GENERATE_TOKEN) ---------------------------------------------------------------------------------------------------------------------------------------------------------------- Typ=1 Len=1: 89 NULL Typ=1 Len=1: 78 SQL> spool off Когда-то на таблице был check constraint novalidate вида (generate_token IN ('Y', 'N')). Сейчас его нет. Но NOT NULL-то никуда не делся. Как это? Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2017, 14:02 |
|
||
|
NULL Шрёдингера
|
|||
|---|---|---|---|
|
#18+
Забыл добавить: SQL> SELECT COUNT(*) FROM x WHERE SYS_OP_MAP_NONNULL(generate_token) = SYS_OP_MAP_NONNULL(NULL); COUNT(*) ---------- дофига ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2017, 14:11 |
|
||
|
NULL Шрёдингера
|
|||
|---|---|---|---|
|
#18+
Вадиман, а в чем конкретно проблема? покажи Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2017, 14:43 |
|
||
|
NULL Шрёдингера
|
|||
|---|---|---|---|
|
#18+
xtenderВадиман, а в чем конкретно проблема? покажи Код: plsql 1. Я уже приводил distinct выше: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2017, 02:11 |
|
||
|
NULL Шрёдингера
|
|||
|---|---|---|---|
|
#18+
xtenderВадиман, а в чем конкретно проблема? [/src] Проблема в том, что при действующем NOT NULL имеем NULLs в колонке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2017, 02:13 |
|
||
|
NULL Шрёдингера
|
|||
|---|---|---|---|
|
#18+
а, невнимательно посмотрел... Это определение таблицы получено с помощью dbms_metadata.get_ddl или реально так таблица создавалась? В эту таблицу лодырем или директом не заливается? ВадиманНо NOT NULL-то никуда не делся. Покажи Код: plsql 1. 2. 3. 4. last_change там какой стоит? зы. вообще 12.1.0.2 сыроватая версия ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2017, 03:06 |
|
||
|
NULL Шрёдингера
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. История такова: 1. сначала ALTER TABLE x ADD COLUMN generate_token VARCHAR2(1 BYTE) DEFAULT ON NULL 'N' 2. потом создавалась другая таблица, куда переливались данные из существующей X, и в этой другой таблице колонка generate_token уже была объявлена как DEFAULT ON NULL 'N' NOT NULL 3. INSERT as SELECT, DROP, RENAME. Здесь, наверное, и был direct path load. Проблема с этого момента тянется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2017, 03:44 |
|
||
|
|

start [/forum/topic.php?fid=52&fpage=145&tid=1885203]: |
0ms |
get settings: |
12ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 367ms |

| 0 / 0 |
