CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  应用实例

分区视图建立后,不能插入记录

楼主win1357(斑马贻贝)2004-11-03 14:39:12 在 MS-SQL Server / 应用实例 提问

按照联机帮助文档上的方法建立了分区视图,两个表放在不同的数据库中,在任何一个库中都可以做查询,但是都不能insert记录,错误为:  
  UNION   ALL   视图   'supEvaluateModel'   不可更新,因为没有找到分区列  
   
  我查过前面有人问过同样的问题,但是我在两个库中都不能插入记录,  
  用邹建的强制修改系统表方法也不行,不知道是不是我的SQL写错了。  
  系统表sysobjects中也有表的约束那条记录,parent_obj指向的也是对应的表记录的id。  
  怎么回事啊,YM~~ 问题点数:80、回复次数:11Top

1 楼irq001()回复于 2004-11-03 14:50:33 得分 0

详细说下,你是要insert记录到视图中吗?Top

2 楼win1357(斑马贻贝)回复于 2004-11-03 14:56:28 得分 0

是的,我用insert插记录到视图'supEvaluateModel'    
  supEvaluateModel0和supEvaluateModel1是视图中的表名  
   
  CREATE   VIEW   dbo.supEvaluataModel  
  AS  
  SELECT   *  
  FROM   Northwind.dbo.supEvaluateModel0  
  union   all  
  SELECT   *  
  FROM   pubs.dbo.supEvaluateModel1Top

3 楼irq001()回复于 2004-11-03 15:05:04 得分 0

你是用的联合啊,你怎么确定要往哪个表中插入记录啊?应该有个标记吧。  
  在视图中插入记录可以在试图上创建一个INSTEAD   OF触发器。Top

4 楼zjcxc(邹建)回复于 2004-11-03 15:15:57 得分 0

建表的脚本写出来Top

5 楼zjcxc(邹建)回复于 2004-11-03 15:16:07 得分 0

应该是你的约束写得不对.Top

6 楼zjcxc(邹建)回复于 2004-11-03 15:23:02 得分 80

--看下面的示例  
   
  --示例表  
  create   table   tempdb.dbo.t_10(  
  id   int   primary   key   check(id   between   1   and   10),name   varchar(10))  
   
  create   table   pubs.dbo.t_20(  
  id   int   primary   key   check(id   between   11   and   20),name   varchar(10))  
   
  create   table   northwind.dbo.t_30(  
  id   int   primary   key   check(id   between   21   and   30),name   varchar(10))  
  go  
   
  --分区视图  
  create   view   v_t  
  as  
  select   *   from   tempdb.dbo.t_10  
  union   all  
  select   *   from   pubs.dbo.t_20  
  union   all  
  select   *   from   northwind.dbo.t_30  
  go  
   
  --插入数据  
  insert   v_t   select   1   ,'aa'  
  union     all   select   2   ,'bb'  
  union     all   select   11,'cc'  
  union     all   select   12,'dd'  
  union     all   select   21,'ee'  
  union     all   select   22,'ff'  
   
  --更新数据  
  update   v_t   set   name=name+'_更新'   where   right(id,1)=1  
   
  --删除测试  
  delete   from   v_t   where   right(id,1)=2  
   
  --显示结果  
  select   *   from   v_t  
  go  
   
  --删除测试  
  drop   table   northwind.dbo.t_30,pubs.dbo.t_20,tempdb.dbo.t_10  
  drop   view   v_t  
   
  /*--测试结果  
   
  id                     name                
  -----------   ----------    
  1                       aa_更新  
  11                     cc_更新  
  21                     ee_更新  
   
  (所影响的行数为   3   行)  
  ==*/Top

7 楼win1357(斑马贻贝)回复于 2004-11-03 15:40:28 得分 0

上面的示例可以正确使用,谢谢  
  我是在企业管理器的设计表中设置check约束的,不知道这样为什么就不行。Top

8 楼zjcxc(邹建)回复于 2004-11-03 15:57:39 得分 0

生成表结构脚本出来看看,看少了什么.Top

9 楼win1357(斑马贻贝)回复于 2004-11-03 16:10:53 得分 0

if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N'[dbo].[supEvaluateModel0]')   and   OBJECTPROPERTY(id,   N'IsUserTable')   =   1)  
  drop   table   [dbo].[supEvaluateModel0]  
  GO  
   
  CREATE   TABLE   [dbo].[supEvaluateModel0]   (  
  [OID]   [nvarchar]   (40)   COLLATE   Chinese_PRC_CI_AS   NOT   NULL   ,  
  [ModelName]   [nvarchar]   (40)   COLLATE   Chinese_PRC_CI_AS   NOT   NULL   ,  
  [OrgGuid]   [nvarchar]   (40)   COLLATE   Chinese_PRC_CI_AS   NOT   NULL   ,  
  [ModelDesc]   [nvarchar]   (40)   COLLATE   Chinese_PRC_CI_AS   NOT   NULL   ,  
  [ModelStatus]   [int]   NOT   NULL   ,  
  [Modeltype]   [int]   NOT   NULL    
  )   ON   [PRIMARY]  
  GO  
   
  没有设置的约束,但是我设置了OID的check为OID>10的。  
  是不是在表设计时忽略了什么东西Top

10 楼zjcxc(邹建)回复于 2004-11-03 16:12:48 得分 0

用SQL语句建表,把它加上去.Top

11 楼win1357(斑马贻贝)回复于 2004-11-03 16:20:53 得分 0

好,谢谢Top

相关问题

  • 分区视图插入数据出现进程死锁现象
  • 分区视图的的数据插入问题
  • 分区视图的问题!
  • 分区视图的更新
  • 为什么我的远程视图一次只能插入一条记录?
  • 有关分区视图的问题
  • 关于分区视图的问题,急!!!
  • 本地分区视图与分布分区视图的更新问题。
  • 删除视图记录
  • 分区视图的日期分区列的疑问!!!!

关键词

  • 视图
  • view
  • check
  • supevaluatemodel
  • 记录
  • dbo
  • 分区
  • 插入
  • 表
  • union

得分解答快速导航

  • 帖主:win1357
  • zjcxc

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo