我有一个存储过程,其中数据被插入到表中,但是只允许插入某些数据。如果某列包含某些字符(例如:xyz)?
,如何回滚/取消sp答案 0 :(得分:1)
COMMIT
和ROLLBACK
。唯一的例外是,如果您的DBMS支持回滚到过程中定义的保存点。
对于插入数据的存储过程,您可以INSERT
使用SELECT
子句的WHERE
语句的结果来指定数据验证条件。如果您正在评估和插入多行,这种方法不需要循环结构。
INSERT INTO targetTable ( col1, col2, col3, ...)
SELECT
f1, f2, f3, ...
FROM
someTableOrJoinOrExpression
WHERE
someColumn NOT LIKE '%xyz%'
AND ...
答案 1 :(得分:0)
您可以使用FOR循环仅插入需要的值。 声明
begin
for i in (select * from table1) loop
if i.field1 != 'xyz' then
insert into table2
values (i.field1,....,field10)
else
//You can do any other action
end if;
end loop;
commit;
end;
最好只存储您需要的记录,而不是插入和删除。 只有确保你的条件在" IF"让我们只传递你需要的记录