您的位置:程序门 -> ms-sql server -> 基础类



路过看一下吧


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


路过看一下吧[已结贴,结贴人:gthlu]
发表于:2007-06-12 11:39:47 楼主
我有两个视图:   v_1,v_2
同时运行添加进数据库,v_1视图里有调用v_2的语句,在添加运行时v_1先运行,而且同时v_2还不存在,这样数据库就会报个错:v_2对象无效。

请问怎样可以让这个错误不提示,要求v_1肯定先运行。
发表于:2007-06-12 11:49:521楼 得分:20
不能

视图会在系统表中记录相关的信息,   特别是要在   syscolumns   中记录列的相关信息,   如果相关的对象不存在,   这个信息是无法建立的,   这也就意味着视图无法建立
发表于:2007-06-12 11:50:302楼 得分:5
好像不行吧
发表于:2007-06-12 11:50:543楼 得分:5
哦,老大说不行了,那肯定不行!:)
发表于:2007-06-12 11:54:024楼 得分:0
有点悬,
没有做过。。
发表于:2007-06-12 11:55:025楼 得分:0
老2说不行,那也许不行,
发表于:2007-06-12 12:00:206楼 得分:10
肯定不行
一定要先create   view   v_2  
然后v_1,再alter   view   v_2

不过不知能否在v_1中先把v_2建出来,来个调用阿?
发表于:2007-06-12 12:05:077楼 得分:0
我批量得到了所有的建视图语句,可是在一个新库里运行时,视图嵌套调用问题很是问题啊,唉!看来真没办法解决了?
发表于:2007-06-12 12:11:428楼 得分:0
楼主的这种情况,   我一般是多执行几次,   不要理会对象已经存在的错误
发表于:2007-06-12 12:49:499楼 得分:10
能否考虑用以下语句将v_1设计成条件结构?再在v_1中创建v_2
if   not   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(n '[dbo].[v_2] ')   and   objectproperty(id,   n 'isview ')   =   1)
发表于:2007-06-12 13:00:2110楼 得分:0
谢谢各位了,看来确实不行,我还是改代码方案算了,取代码时,判断是否有嵌套调用,被调用的视图先取出来。
发表于:2007-06-12 13:07:5111楼 得分:0
sorry,老外了


快速检索

最新资讯
热门点击