Оператор Oracle Modify - ошибка - PullRequest
1 голос
/ 20 декабря 2008

Я добавил новый столбец в моей таблице.

ALTER TABLE neue_buch modify preis not null;

и я получил эту ошибку:

Error starting at line 40 in command:
ALTER TABLE neue_buch
modify preis not null
Error report:
SQL Error: ORA-02296: cannot enable (S1885872.) - null values found
02296. 00000 - "cannot enable (%s.%s) - null values found"
*Cause:    an alter table enable constraint failed because the table
           contains values that do not satisfy the constraint.
*Action:   Obvious

Что не так с моим MODIFY STATEMENT .?

большое спасибо заранее,

magidu

Ответы [ 3 ]

5 голосов
/ 20 декабря 2008

Сообщение об ошибке говорит о том, что в NEUE_BUCH есть несколько строк, где столбец PREIS равен NULL. Вам нужно изменить эти строки, чтобы они имели значения, отличные от NULL, прежде чем вы сможете создать это ограничение NOT NULL.

1 голос
/ 27 июня 2012

У вас есть два варианта:

  1. Удалите пустые значения - например, обновить строки со значением NULL, чтобы они имели какое-либо значение; или удалите строки.

  2. Сделать ограничение недействительным для существующих данных - это приведет к сбою ограничения только для вновь вставленных или обновленных строк.

    ALTER TABLE neue_buch MODIFY preis NOT NULL NOVALIDATE;
    

Оба подхода имеют свои плюсы и минусы. Вариант 1 лучше для производительности, потому что CBO может полагаться на ограничение при оптимизации запросов. Однако, если вы просто не знаете , какими должны быть значения NULL, у вас может возникнуть желание заменить их на «индикатор нулевого значения», то есть магическое значение - например, для столбца, который имеет только положительные целые числа, вы можете заменить NULL -1 или чем-то еще, но это имеет свои недостатки. Вариант 2 может быть предпочтительным в этом случае, чтобы избежать использования магических значений.

0 голосов
/ 14 января 2009

ALTER TABLE AG_PARTICELLE_AZIENDA MODIFY SEZIONE NOT NULL; ORA-02296: невозможная способность (TRACKER.) - trovati valori non Properati

Нелла Табелла AG_PARTICELLE_AZIENDA alcuni valori di SEZIONE соно ноль!

тариф для дево:

1) обновить AG_PARTICELLE_AZIENDA set sezione = null;

2) фиксации;

3) ALTER TABLE AG_PARTICELLE_AZIENDA MODIFY SEZIONE NOT NULL;

не хо капито иль маджаджо ди эрроре! qualcquno può aiutarmi? Grazie ugo montorsi mail: ugo.montorsi@sin.it

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...