insert:一般只要参数个数和类型没问题,不会插入异常
INSERT INTO t_pos_dynamic_map(autoid, lt_termno, lt_merchno)
VALUES(SEQ_Pos_dynamic_Map_Autoid.NEXTVAL, lTradeInfo.Ltl_Termno, lTradeInfo.Ltl_Merchno);
delete:
delete from nac_user.t_nac_route_log 删除整表记录,可回滚还原
truncate:迅速清空整张表
truncate table nac_user.t_nac_route_log 不可回滚还原
TRUNCATE和DELETE有以下几点区别
1)TRUNCATE在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令DELETE将被撤销,而TRUNCATE则不会被撤销。
2)TRUNCATE是一个DDL语言,向其他所有的DDL语言一样,他将被隐式提交,不能对TRUNCATE使用ROLLBACK命令。
3)TRUNCATE将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时,经过TRUNCATE操作后的表比DELETE操作后的表要快得多。
4)TRUNCATE不能触发任何DELETE触发器。
5)不能授予任何人清空他人的表的权限。
6)当表被清空后,表和表的索引讲重新设置成初始大小,而delete则不能。
7)不能清空父表。
有表A B C,B C中有引用A表字段的外键。先truncate表B C(子表-外键表),然后truncate表A(父表),出现错误:ORA- 02266: 表中的唯一/主键被启用的外键引用
truncate和DELETE不同,TRUNCATE不能直接这么操作,需要:禁用/激活约束
alter table a disable primary key cascade ; //主键不被级联,(关键字还有drop/modify)
truncate table a;
alter table a enable primary key; //主键被级联
select:select NULL into 会异常
SELECT t.rr_id
INTO rr_Id --获取规则ID
FROM t_l_terminal t
WHERE t.lt_termno = lTradeInfo.Ltl_Termno
AND t.lt_merchno = lTradeInfo.Ltl_Merchno;
update:update 0行 不会异常
UPDATE t_r_trm_useinfo t
SET t.status = ‘S‘, t.updatetime = SYSDATE
WHERE t.rmerchno = inRMchNo
AND t.rtermno = inRTrmNo
AND t.rinterfaceid = ChannelInfo.Ri_Interface;