作者noguest (guest)
看板Database
标题Re: [SQL ] 请问insert的时候如果遇到重覆的资料(A …
时间Thu Nov 15 16:54:56 2007
※ 引述《kazumi6533 (patrick)》之铭言:
: 请问一下
: 如果我有一笔资料要insert,但是不知道是不是会有重覆
: 如果重覆的话就用update,那我应该怎麽做
: 是不是只能先select一个recordset,然後检查recordset里面是不是有该笔
: 然後再决定要不要insert或update?
: 如果是这样我应该怎麽做比较好,因为我资料很多,大概一百万笔左右
: 如果每一笔都这样检查是不是会变得很慢...orz..
: 谢谢
若是 Oracle,可以用 MERGE 指令,简单又迅速。早一点的版本是叫作 UPSERT,
基本上就是 update 加 insert,也可以再加上 delete。
范例:
MERGE INTO bonuses D
USING (SELECT employee_id, salary, department_id
FROM employees WHERE department_id = 80) S
ON (D.employee_id = S.employee_id)
WHEN MATCHED THEN UPDATE SET D.bonus = D.bonus + S.salary*.01
DELETE WHERE (S.salary > 8000)
WHEN NOT MATCHED THEN INSERT (D.employee_id, D.bonus) VALUES
(S.employee_id, S.salary*.01) WHERE (S.salary <= 8000);
这个例子是给薪水小於八千的员工,每人薪水的百分之一当做 bonus。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 64.9.235.13