|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
出于效率方面的考虑,InnoDB数据表的数据行级锁定实际发生在它们的索引上,而不是数据表自身上。显然,数据行级锁定机制只有在有关的数据表有一个合适的索引可供锁定的时候才能发挥效力。成绩
一次在做到多个表同时更新的时分,出了些成绩。
有需要写出来,引发注重。
固然多个DW(3个)各自对应的都是一个表,但这些表间存在着干系,并且DW是同时更新。
好比:table_1:ID,name,sex.......
table_2:...ID(与table_1有对应干系),pro_1,pro_2......
table_3:...ID(与table_1有对应干系),reg_time.....
因为没有履历:
第一次,后两个DW里在计划的时分,没有选择与第一个表相干的项----ID。
厥后,发明没法更新。
只能重新计划,将table_2和table_3的ID项都分离选在各自的DW中,
但在界面中又不想让其呈现,最好的举措---
设置他们的visable属性为False,也就是往失落属性里visable前的“钩”。
计划好后的编码中,我先入手下手的编码是:
ifdw_1.update()=1then
ifdw_2.update()=1then
ifdw_3.update()=1then
commit;
else
rollback;
endif
endif
endif
----------------------------
但最好仍是写成上面对照好:
file://加的SQLCA属性的处置(通用目标)
booleanlb_Tran
lb_Tran=sqlca.AutoCommit
sqlca.AutoCommit=false
IFdw_1.Update()1THEN
MessageBox("操纵提醒","dw_1数据保留失利!")
ROLLBACK;
sqlca.AutoCommit=lb_Tran
RETURN
ELSEIFdw_2.Update()1THEN
MessageBox("操纵提醒","dw_2数据保留失利!")
ROLLBACK;
sqlca.AutoCommit=lb_Tran
RETURN
ELSEIFdw_3.Update()1THEN
MessageBox("操纵提醒","dw_3数据保留失利!")
ROLLBACK;
sqlca.AutoCommit=lb_Tran
RETURN
ELSE
COMMIT
ENDIF
------------------------------------------------------------------------
这类操作的执行过程是,1)按照新的表定义建立一个临时表tmpa,2)将原表数据拷贝到临时表,3)将原始表改名tmpb,4)将tmpa改名为原表名,5)将tmpb删除。 |
|