2016-04-28 4 views
1

Я бегу ORACLE. И у меня проблема. Может ли кто-нибудь сказать мне, как установить значение DEFAULT как значение столбца из этой же таблицы во время создания? Например:Как вставить значение значения по умолчанию в качестве значения столбца во время создания таблицы?

CREATE table testing 
(
id varchar2(20), 
name varchar2(20), 
myvalue varchar2(30) default id + name 
) 

В приведенной выше таблице, как я могу установить значение по умолчанию ограничения в этом MyValue «s как каскадное значение ид и имени ?? То есть я хочу, чтобы значение поля myvalue было значением полей id и name при создании таблицы ИЛИ с использованием команды таблицы CREATE ТОЛЬКО. Как это можно сделать?

Пожалуйста, помогите мне. Спасибо.

+2

Имейте в виду, конкатенацию двух 'VARCHAR2 (20)' значений может привести к VARCHAR (** 40 **). 'varchar2 (30)' в этом случае недостаточно. –

+0

Спасибо за указание. Я не обратил на это внимания. –

ответ

4

Вы можете попытаться изменить таблицу как:

ALTER TABLE testing 
MODIFY (myvalue VARCHAR2(40) GENERATED ALWAYS AS (id || ' ' || name) VIRTUAL); 

или вы можете попытаться создать триггер так:

CREATE OR REPLACE TRIGGER  myTrigger 
BEFORE  INSERT OR UPDATE 
ON  testing 
FOR EACH ROW 
BEGIN 
    :NEW.myvalue:= :NEW.id 
       || ' ' 
       || :NEW.name; 
END; 
+0

Вам не нужен 'TO_CHAR (...)' для типа данных VARCHAR2. –

+0

@WernfriedDomscheit: - Спасибо, что указали это. Обновлено! –

+0

Просто nitpicking, но дополнительное пространство, добавленное в триггере, предлагает объявить 'myvalue' как' varchar2 (41) '. – collapsar

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

  • Нет связанных вопросов^_^