【发布时间】:2016-02-02 03:00:25
【问题描述】:
我想创建一个 Oracle PL/SQL 插入脚本。这只是一次插入语句,如果脚本被执行多次并且Table 中有类似的值可用,它应该跳过执行。
现在如果脚本再次执行,我希望它成功完成。但是,如果表中有类似的记录,我不想输入重复的数据。
这是我的脚本:
Set SERVEROUTPUT ON
BEGIN
INSERT INTO TableA
(First,
Last,
Address,
City,
State,
Zip
)
VALUES
('Alex',
'Roark',
'25 El Camino Real',
'San Roman',
'CA',
'94008'
);
INSERT INTO TableA
(First,
Last,
Address,
City,
State,
Zip
)
VALUES
('William',
'Chan',
'3700 Baltimore Ave',
'Detroit',
'MI',
'21003'
);
INSERT INTO TableA
(First,
Last,
Address,
City,
State,
Zip
)
VALUES
('Petty',
'Garg',
'1980 Fernando Ct',
'Austin',
'TX',
'85002'
);
INSERT INTO TableA
(First,
Last,
Address,
City,
State,
Zip
)
VALUES
('Thomas',
'Gregory',
'56 E Washington Blvd',
'Philadelphia',
'PA',
'19803'
);
DBMS_OUTPUT.PUT_LINE('Insert Completed Successfully');
COMMIT;
EXCEPTION
WHEN dup_val_on_index
THEN ROLLBACK;
END;
/
Set serveroutput off;
【问题讨论】:
-
你有什么问题?
-
你用你的脚本试过了吗?
-
如何将
dup_val_on_index的异常处理程序从rollback;更改为null;? -
如何在你的表中实现一个唯一的主键,或者一个可以使记录与其他记录区分开来的列,如 id?这样您就可以对其实现唯一索引,然后您就可以实际使用 dup_val_on_index 异常
标签: sql oracle plsql plsqldeveloper