2014-11-15 3 views
0

Я создал эту тестовую таблицу db и добавил 3 столбца col, col2 и cal3. Я хочу, чтобы значение cal 3 было получено из col + col2. Не позволяет вставлять данные с использованием вставки. Что такое оператор sql для вставки значений.Вставить в производный столбец с той же таблицей

В таблице создается заявление выглядит следующим образом: -

create table db 
(
col number(10),col2 number(20), cal3 number(10) generated always as (col+col2) 
); 

ответ

0

Поскольку у вас есть вычисляемый столбец, вы должны указать столбцы, которые вы вставляете в:

insert into db (col, col2) values (10, 20); 

select * from db после вставки выше будет дайте вам:

| COL | COL2 | CAL3 | 
|-----|------|------| 
| 10 | 20 | 30 | 
+0

--umm. я сделал что-то глупое вставить в db (10,20); я думал, что не должен указывать столбцы, поскольку последний столбец – mhrzn

0

Значения виртуальной колонны всегда генерируются dynamicall y с определенной логикой.

Оператор INSERT должен иметь значения для столбцов, используемых для CAL3. В противном случае значение будет NULL для CAL3.

Сценарий 1: (значение только COL поле)

INSERT INTO DB (COL) VALUES(100); 

Вывод таблицы БД будет осуществляться следующим образом.

SELECT * FROM DB; 

COL | COL2 | CAL3 
------------------ 
100 (null) (null) 

Сценарий 2: (Значение для обоих COL и Col2 полей)

INSERT INTO DB (COL,COL2) VALUES(100,200); 

Вывод таблицы БД будет осуществляться следующим образом.

SELECT * FROM DB; 

COL | COL2 | CAL3 
------------------ 
100 200 300 
Смежные вопросы