|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
InnoDB事务型数据库的首选引擎,支持ACID事务,支持行级锁定我们在反省视图功能时,一般会检察视图中究竟援用了那些表。固然,我们能够使用sp_helptext检察视图的界说。但在这章,我们次要解说怎样使用SQL疾速地检察指定视图所援用的一切表。
在此之前,我们先懂得一下目次视图sys.sql_dependencies,该视图的注释以下:
"在界说某些其他援用(相干)工具的SQL表达式或语句中举行援用时,被援用(自力)实体的每一个相干性在表中均对应一行。任何工具或列的界说属性包括SQL表达式时,都能够有相干性"
下面的注释大概对照拗口,复杂的了解就是假如在某个SQL界说(如:视图,函数,触发器等)中假如援用了某个表,那末就会在sys.sql_dependencies中存在一条对应的纪录。并且,假如援用了这个表的多个列,那末就会有多笔记录。
sys.sql_dependencies前往的主要的列:
object_id--界说的工具ID(在本章就是指我们要查询的视图名)
referenced_major_id--被援用的实体的ID(在本章就是被援用表的称号)
referenced_minor_id--被援用的实体的列的ID(在本章就是被援用表的列的ID)
人人能够经由过程select*fromsys.sql_dependencies检察了局就可以分明了。
懂得了这些,前往视图所援用一切表的SQL语句就变的很复杂了,示比方下:
selectdistinctobject_name(referenced_major_id)asreferencednamefromsys.sql_dependencies
假如还必要查询出一切被援用的列,可使用以下SQL语句:
selectobject_name(A.object_id)asobject_name,B.NameasColumnName
fromsys.sql_dependenciesA
leftjoinsys.columnsBonA.referenced_minor_id=B.column_idandA.referenced_major_id=B.object_id
延长:由于在视图中除援用表以外,另有大概援用函数等,以是我们还应当查询出所援用实体的范例,示例SQL以下:
declare@viewnamevarchar(50)
set@viewname=v_Salary--假定的视图名
select@viewnameasname,
nameasreferencedname,
type--所援用实体的范例
fromsys.objects
wherenamein(
selectdistinctobject_name(referenced_major_id)asreferencedname
fromsys.sql_dependencies
whereobject_id=object_id(@viewname))
以上就是本节一切内容了,假如有不合错误大概更好的办法,请人人在批评中会商,配合参进,才会更出色!导致了一个使用几乎和mSQL一样的API接口的用于他们的数据库的新的SQL接口的产生,这样,这个API被设计成允许为用于mSQL而写的第三方代码更容易移植到MySQL。 |
|