关键字(8):数据库记录的增删查改insert,delete,select,update

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;
 
posted @ 2014-09-01 09:25  初来  阅读(1206)  评论(0编辑  收藏  举报