假設我們有以下2張表: student , detail_info 。(mysql版本)
其他detail_info的外來鍵是name (也就是說detail_tail 中name的值要在student中有)
現在準備需要往這兩張表中插入資料供測試時使用,
方法一,手動插入
必須選插入一條記錄到student中,然後再插入一條到detail_info,且name要在student中有。
方法二,利用mysql的儲存過程
2.1 建立儲存過程(一次插入一條資料)
**塊create procedure pr_add
(v_id int, -- 打算插入的id
v_name varchar(20) –打算插入的name
)begin
insert into `student` values (v_id, v_name, 'male', '20', '2011-08-16 22:05:45' );
insert into `detail_info` values (v_id, v_name, '2011-08-16', '13881954050', 'xinjiang');
end;
2.2 呼叫儲存過程
查詢相應的表檢查
1.3深入乙個,建立乙個一次能插入多條資料的儲存過程
**塊create procedure proc_add
(number int -- 打算新插入多少條資料
)begin
declare v_name varchar(20);
declare v_i int;
set v_i=0;
select max(id) into v_i from student; -- 獲得當前表中最大id,並儲存進變數v_i
set number=v_i+number; -- 最大id
set v_i=v_i+1; -- 插入的id從當前id+1開始
while v_i<=number do -- 插入的id值從id+1 ~ number
set v_name=concat('bill' , v_i ); -- 拼接name,因為name不能相同
insert into `student` values (v_i, v_name, 'male', '20', '2011-07-16' );
insert into `detail_info` values (v_i, v_name, '2011-08-16 22:05:45', '13881954050', 'xinjiang');
set v_i=v_i + 1;
end while;
end;
呼叫
檢視結果
方法三,利用工具datafactory
資料驗證
小結 利用儲存過程新增資料較方便,但需要自己編寫sql語句塊。有關mysql的儲存過程只在mysql5以後才能使用,詳細的介紹請參考網路。
datafactory 在建立大資料量是更有優勢,但設定起來比較麻煩,需要對每個字段進行設定。有關datafactory的詳細操作,如有興趣,可另外討論。這裡只是介紹一下。
儲存過程示例 用儲存過程分頁
create proc propage pageid int pagesize int asbegin if pageid 1 begin set rowcount pagesize select from test order by id endelse begin declare no1 int...
用儲存過程重置序列
sql create sequence seq 1 increment by 1 start with 1 maxvalue 999999999 序列已建立。sql create or replace procedure seq reset v seqname varchar2 as n numbe...
用儲存過程實現翻頁
use card db go object storedprocedure dbo pr get star user list v2 script date 03 05 2010 15 27 18 set ansi nulls on goset quoted identifier on go 查詢s...