vtemp是视图,由vtemp2009xx组成,
在视图上执行下面语句提示4439错delete from vtemp where cardid= 5816 and downtime=(select max(downtime) from vtemp where downtime>='2009-08-07 12:08:06' and cardid = 5816)在单个vtemp2009xx中没问题,一旦在视图中加入其它vtemp2009xx,就出现4439错误
在视图上执行下面语句提示4439错delete from vtemp where cardid= 5816 and downtime=(select max(downtime) from vtemp where downtime>='2009-08-07 12:08:06' and cardid = 5816)在单个vtemp2009xx中没问题,一旦在视图中加入其它vtemp2009xx,就出现4439错误
解决方案 »
- 尚未注册 OLE DB 访问接口 "MSDASQL ",跨数据库同步数据
- SQL 的ceiling函数和程序里的运算,效率问题!
- 哪里可以找到HOSTNAME?
- 问个问题(表名为##t1)
- 初学者对于主键和外键求问
- 大虾来救救我的数据库啊~~~~~谢谢了~~~~
- SQL
- 把access数据库转移到SQL server 2000中时出现了下面的问题
- 我以sa登录,打开sql server7.0数据库打开里面的表,去看不见一条纪录,不知道是何原因?
- 能否构造不select表中的某几个字段的Select语句??
- 求助,怎么加上按时间排序这一项呢
- 请问insert时,先执行插入还是先对constraint验证
如果分区视图不可更新,则它只能作为原始表的只读副本。可更新的分区视图可提供原始表的所有功能。当视图是一组 SELECT 语句,这些语句各自的结果集使用 UNION ALL 语句合并在一起时,该视图被视为可更新的分区视图。每个 SELECT 语句引用一个 SQL Server 基表。该表可以是本地表,也可以是使用由四部分组成的名称、OPENROWSET 函数或 OPENDATASOURCE 函数引用的链接表(不能使用指定了直接传递查询的 OPENDATASOURCE 或 OPENROWSET 函数)。此外,引用该视图的数据修改语句必须遵守为 INSERT、UPDATE 和 DELETE 语句定义的规则。如果分区视图分布在多个服务器中,应避免对基表使用触发器或级联操作。触发器或级联操作可能会更改基础数据,这将影响视图定义。只有当用户对视图下的每个表都具有 CONTROL、ALTER、TAKE OWNERSHIP 或 VIEW DEFINITION 权限时,才能更新分布式分区视图参考一下
select * from tempbefor --2009年以前数据
union all select * from temp200901
union all select * from temp200902
union all select * from temp200903
union all select * from temp200904
union all select * from temp200905
union all select * from temp200906
union all select * from temp200907
union all select * from temp200908
union all select * from temp200909
union all select * from temp200910
union all select * from temp200911
union all select * from temp200912
union all select * from tempafter --2009年以后数据是不是上面的删除语句中又引用了视图分区的引用,所以不能删除
直接delete from vtemp where cardid = xxxx 没有问题,是不是后面的select downtime = (select max(downtime) from vtemp 出的问题
有什么方法能解决呢?
http://msdn.microsoft.com/zh-cn/library/ms187067(SQL.90).aspx你去MSDN参考一下