2015-05-22 2 views
0

Я использую ORACLE, и я знаю, что вы не можете DROP столбца, у которого есть ненулевое ограничение.DROP столбца с нулевым значением

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

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

Может ли кто-нибудь объяснить причину такого поведения?

+0

Показать структуру таблицы, вы SQL-запрос и сообщение об ошибке, пожалуйста. – Jens

+6

"* Я знаю, что вы не можете DROP столбца, у которого есть ненулевое ограничение *" - это просто неправильно. Откуда у вас это? http://sqlfiddle.com/#!4/cae4ea/1 –

+0

Хорошо, я могу ошибаться. Так вы можете сбросить столбец с нулевым значением (который имеет значения внутри него)? – Raz

ответ

3

Я использую ORACLE, и я знаю, что вы не можете DROP столбца, у которого есть ненулевое ограничение.

Нет, вы ошибаетесь. Вы можете удалить столбец NOT NULL.

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

Да, вы можете.

См:

SQL> CREATE TABLE t(a number, b varchar2(10) not null); 

Table created. 

SQL> 
SQL> INSERT INTO t(A, b) VALUES(1, 'one'); 

1 row created. 

SQL> 
SQL> SELECT * FROM t; 

     A B 
---------- ---------- 
     1 one 

SQL> 
SQL> ALTER TABLE t DROP COLUMN b; 

Table altered. 

SQL> 
SQL> DESC t; 
Name          Null? Type 
----------------------------------------- -------- ------ 
A             NUMBER 

SQL> 
SQL> SELECT * FROM t; 

     A 
---------- 
     1 

SQL> 
+0

ОК. то я ошибаюсь. – Raz

+0

@raz Нет проблем! Сегодня вы узнали что-то новое. –

Смежные вопросы