2016-11-08 9 views
1

Я попытался использовать следующие скрипты, чтобы добавить ограничение null в мой столбец.Как добавить ненулевое ограничение в существующий столбец в DB2 iSeries?

ALTER TABLE MYDB.RULES ALTER TYPEID SET NOT NULL; 
ALTER TABLE MYDB.RULES ALTER COLUMN TYPEID SET NOT NULL; 

Я также получаю эту ошибку, когда я выполняю его:

Reason code 10. [SQL State=57014, DB Errorcode=-952] 

Можно ли это сделать в DB2 ISeries?

ответ

0

попробовать это, с типом столбца

ALTER TABLE yourlib/yourtable ALTER COLUMN yourcolumn SET DATA 
TYPE VARCHAR (100) NOT NULL       
0
ALTER TABLE MYDB.RULES ALTER TYPEID SET NOT NULL; 

правильно.

Как вы делаете заявление?

Код ошибки вы сообщаете, SQL State = 57014 - Processing was canceled as requested.

заставляет меня верить, что как бы вы бежите заявление, вы не видите сообщение CPA32B2 - Change of file RULES may cause data to be lost. (C I) запроса; поэтому автоматически получает ответ C-Cancel.

0

Если вам требуется ограничение, вы добавляете ограничение. Сначала убедитесь, что все строки таблицы удовлетворяют ограничению, а затем добавляют ограничение.

update mylib/myfile set myfield = ' ' where myfield is null; 
ALTER TABLE mylib/myfile ADD CONSTRAINT myfieldisnull CHECK (myfield is not null); 
1

Сначала вы должны идентифицировать и обрабатывать значения NULL целевой таблицы (обновление, удаление и т.д.)

SELECT COUNT(1) FROM MYDB.RULES WHERE TYPEID IS NULL; 

Чем вы можете создать ограничение на целевую таблицу.

ALTER TABLE MYDB.RULES ALTER COLUMN TYPEID SET NOT NULL;