|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
出于效率方面的考虑,InnoDB数据表的数据行级锁定实际发生在它们的索引上,而不是数据表自身上。显然,数据行级锁定机制只有在有关的数据表有一个合适的索引可供锁定的时候才能发挥效力。我们在修正sqlserver数据库中工具称号的时分,大概会对照喜好利用sp_rename体系存储历程来操纵,由于利用它比起到可视化列表中往找工具,速率要快的多。但为何我们不倡始利用它呢,由于利用它大概会带来一些贫苦。并且,在利用它变动工具名时,数据库自己也会给出以下告诫:
告诫:变动工具名的任一部分都大概会损坏剧本和存储历程。
我们如今来做一个复杂的测试,先创立一个复杂的存储历程:
createprocedureusp_test
as
begin
select1
end
我们不往研讨这个存储历程的功效与语法,由于这个不是本章的重点。
然后利用sp_rename来修正usp_test的称号
sp_renameusp_test,usp_test_1
体系提醒告诫:
告诫:变动工具名的任一部分都大概会损坏剧本和存储历程。但称号是已被修正失落了。
这时候候,我们从企业办理器的存储历程列表中看到存储历程usp_test的称号已修正成usp_test_1了。并且,我们在右键当选择->修正,检察到的剧本中的称号也已存为usp_test_1,界说以下:
ALTERprocedure[dbo].[usp_test_1]
as
begin
select1
end
但我们在利用sp_helptext体系存储历程来检察界说,会发明经由过程这个办法查到的界说,称号并没有变动过去:
sp_helptextusp_test_1
前往了局以下:
createprocedureusp_test
as
begin
select1
end
在sys.sql_modules表中definition列的界说也没有修正过去
selectdefinitionfromsys.sql_moduleswhereobject_id=object_id(usp_test_1)
前往了局以下:
createprocedureusp_testasbeginselect1end
从这个测试中能够看出,我们在修正数据库中工具的称号的时分,大概会造中数据库中该工具的界说分歧步。这大概会招致一些毛病的产生,以下面的链接所酿成的成绩,也就是因为该缘故原由发生的
sqlserver年夜bug:表删除后表的触发器未删除
纠错:
经再次测试后发明,不但是利用sp_name来修正工具名会形成该成绩,经由过程任何体例修正工具名城市存在该成绩,看来,我们在修正工具的称号时要警慎了。一个语句分成两个event(实际上不止,其他可以忽略),一个table_mapevent和一个Rows_log_event。Table_mapevent是一样的,主要看Rows_log_event。 |
|