pl/sql中使用insert into select复制一个表,并且主键使用序列生成的值?
就是从另外一个表中复制几个字段的值到当前表,但是当前表的主键值使用序列生成,这个语句该怎么写?
SQL code
insert into bt_field_enum(fld_enum_id,fld_exp_id,parent_enum_value,enum_value,enum_name,
enum_level,enum_desc,enum_status,use_frequency,enum_order) values select (select seq_fld_enum_id.nexval from dual) as fld_enum_id,205,parent_enum_value,enum_value,enum_name,enum_level,enum_desc,enum_status,
use_frequency,enum_order from jsyd.t_field_enum
大家看我这个语句,报错为“ORA-00936 缺失表达式”
------解决方案--------------------insert into bt_field_enum(fld_enum_id,fld_exp_id,parent_enum_value,enum_value,enum_name,
enum_level,enum_desc,enum_status,use_frequency,enum_order) select seq_fld_enum_id.nexval as ,205,parent_enum_value,enum_value,enum_name,enum_level,enum_desc,enum_status,
use_frequency,enum_order from jsyd.t_field_enum
INSERT INTO的时候,可以直接使用SELECT ,不使用VALUES
------解决方案--------------------不需要用子查询,直接 seq_fld_enum_id.nexval 就可以了。
------解决方案--------------------insert into bt_field_enum
(fld_enum_id,fld_exp_id,parent_enum_value,enum_value,enum_name,
enum_level,enum_desc,enum_status,use_frequency,enum_order)
select seq_fld_enum_id.nexval,205,parent_enum_value,enum_value,enum_name,enum_level,enum_desc,enum_status,
use_frequency,enum_order from jsyd.t_field_enum
------解决方案--------------------看看这个,自己测试下
insert into bt_field_enum(fld_enum_id,fld_exp_id,parent_enum_value,enum_value,enum_name,
enum_level,enum_desc,enum_status,use_frequency,enum_order)
select seq_fld_enum_id.nexval,205,parent_enum_value,enum_value,enum_name,
enum_level,enum_desc,enum_status,use_frequency,enum_order
from (select parent_enum_value,enum_value,enum_name,enum_level,enum_desc,enum_status,
use_frequency,enum_order
from jsyd.t_field_enum);