2014-04-30 3 views
0

У меня есть одна таблица, в которой есть поданная. Когда я вставляю в эту таблицу с пустым значением, например «'или null, он должен быть преобразован в« DUMMY-VALUE ».В Oracle, как обрабатывать значения NULL при вставке в таблицу

--Have one table; 
CREATE TABLE TEST (FIELD1 VARCHAR2(50)); 

--When I insert '' 
INSERT INTO TEST(FIELD1) VALUES(''); 

SELECT * FROM TEST 
--Expected Result 'DUMMY-VALUE' but not NULL 

я могу применить NVL('','DUMMY-VALUE') в INSERT заявление, но я имею право изменить CREATE заявление только. На данный момент я передаю это TRIGGER, но, задаваясь вопросом, есть ли какая-либо альтернатива в 11g, я знаю о DEFAULT ON NULL для oracle 12c.

+5

Как сделать столбец со значением по умолчанию «DUMMY-VALUE»? и вставка без этого поля, если значения NULL или empty? – TechDo

+0

Нет, значение по умолчанию не будет работать, потому что NULL или '' переопределит значение по умолчанию. Однако ваше предложение будет работать только в том случае, если имя столбца не упоминается во время вставки. – touchchandra

ответ

2

Вы можете сделать так:

create table TEST (FIELD1 VARCHAR2(50) default 'DUMMY-VALUE' ); 

и когда вы хотите вставить вы должны вставить без этого поля, если значения является NULL или пустая

+1

Это будет работать, только если FIELD1 не указан в инструкции insert. Передача NULL явно будет обходить значение по умолчанию. –

+0

yoy может посмотреть это: http://sqlfiddle.com/#!4/68dbf/1/0 –

+0

Я имел в виду это: http://sqlfiddle.com/#!4/02938/1. Примечание. Я могу вставить NULL в поле1 явно. –

2

Попробуйте это:

CREATE TABLE TEST (FIELD1 VARCHAR2(50) DEFAULT 'DUMMY-VALUE'); 

, используйте ключевое слово DEFAULT в заявлении INSERT:

INSERT INTO TEST (FIELD1) VALUES (DEFAULT); 

SQLFiddle here

Делите и наслаждайтесь.

+0

Спасибо за хороший подсказку bob, но это заставит вставлять DEFAULT во всех случаях. – touchchandra

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