1. 程式人生 > >複製A表的若干欄位的資料到B表

複製A表的若干欄位的資料到B表

這是將表A的三個值查詢出來,然後插入表B;需要注意的是,表A的三個值和表B的三個值是一一對應的,所以表B事先存在,並且欄位和表A對應;

insert into tableB(value1,value2,value3)

select value4,value5,value6

from tableA;

例如

insert into   t_booknew_monthlyAssessment (NURSE_NAMES,NURSE_IDS,WARD_IDS,DEPT_IDS)   select USER_NAME,USER_ID,DEPT_ID,WARD_ID  from T_HRM_USER_INFO

我插入的時候遇到一個問題。報錯orcl01400,插入失敗。

原因是我的表有主鍵,並且不能為空,所以插入失敗。

解決方法:建立觸發器自增。

觸發器方式也需要建立SEQUENCE ,然後在將SEQUENCE 設定觸發。
1.建立SEQ

執行以下SQL 建立表

---自增序列
CREATE SEQUENCE T_SYS_USER_SEQ
MINVALUE 1 
NOMAXVALUE 
INCREMENT BY 1 
START WITH 1 NOCACHE ;

2.設定觸發器

執行下邊語句


--建立觸發器
create or replace trigger T_SYS_USER_USER_ID_TRIGGER
  before insert on SYS_USERS  
  for each row
begin
  select T_SYS_USER_SEQ.nextval into :new.user_id from dual;
end T_SYS_USER_USER_ID_TRIGGER;

注意一下這四條資訊改成自己的就行了
T_SYS_USER_USER_ID_TRIGGER 是設定的觸發器名字
SYS_USERS是表名
T_SYS_USER_SEQ 是序列名
new.user_id 是 new.主鍵
3.插入的SQL

忽略id 直接插入, id資料庫自動新增

insert into sys_users(user_name,user_pwd,sex) 
       values('shaoduo','shao111','男') ;
       commit ;