drop table [WORK_DETAIL_H] drop table [WORK_DETAIL_S] drop view view_WORK_DETAIL ---首先 兄弟我创建了两张表 CREATE TABLE [WORK_DETAIL_H] ( [ID] [int] NOT NULL , [LB] [VARCHAR](2) NOT NULL CHECK (LB = 'H') , [FXPH] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL primary key (id,lb) ) GO CREATE TABLE [WORK_DETAIL_S] ( [ID] [int] NOT NULL , [LB] [VARCHAR](2) NOT NULL CHECK (LB = 'S') , [FXPH] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL primary key (id,lb) ) GO ---其次 兄弟我创建分区视图 create view view_WORK_DETAIL as select * from WORK_DETAIL_H union all select * from WORK_DETAIL_S go ---然后我插入数据 insert into view_WORK_DETAIL values(2,'H','09H001') -- --(所影响的行数为 1 行) go------------然后下面来问题了 --如果我通过企业管理器 更改这两张基础表的 fxph字段为 not null --然后执行下alter table [WORK_DETAIL_H] alter column [FXPH] [varchar] (20) COLLATE Chinese_PRC_CI_AS not NULL go alter table [WORK_DETAIL_S] alter column [FXPH] [varchar] (20) COLLATE Chinese_PRC_CI_AS not NULL go alter view view_WORK_DETAIL as select * from WORK_DETAIL_H union all select * from WORK_DETAIL_S go ---接着执行 insert into view_WORK_DETAIL values(1,'H','09H001') go --就出错了 -- UNION ALL 视图 'view_WORK_DETAIL' 不可更新,因为没有找到分区列。select * from dbo.view_WORK_DETAIL (1 行受影响)(1 行受影响) ID LB FXPH ----------- ---- -------------------- 1 H 09H001 2 H 09H001(2 行受影响)没错啊
我用的是SQL SERVER 2000的 不知道我装的版本有问题还是怎么回事但是如果执行下下面的代码 exec SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE go update sysobjects set status=6 where xtype='C' and parent_obj in(object_id('WORK_DETAIL_S'),object_id('WORK_DETAIL_H')) go exec SP_CONFIGURE 'ALLOW UPDATES',0 RECONFIGURE WITH OVERRIDE go 就可以了我发现只要我稍微动了下这两个基本表 sysobjects 的 status 值会变了大家给解释下
drop table [WORK_DETAIL_S]
drop view view_WORK_DETAIL
---首先 兄弟我创建了两张表
CREATE TABLE [WORK_DETAIL_H] (
[ID] [int] NOT NULL ,
[LB] [VARCHAR](2) NOT NULL CHECK (LB = 'H') ,
[FXPH] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL
primary key (id,lb)
)
GO
CREATE TABLE [WORK_DETAIL_S] (
[ID] [int] NOT NULL ,
[LB] [VARCHAR](2) NOT NULL CHECK (LB = 'S') ,
[FXPH] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL
primary key (id,lb)
)
GO
---其次 兄弟我创建分区视图
create view view_WORK_DETAIL
as
select * from WORK_DETAIL_H
union all
select * from WORK_DETAIL_S
go
---然后我插入数据
insert into view_WORK_DETAIL values(2,'H','09H001')
--
--(所影响的行数为 1 行)
go------------然后下面来问题了
--如果我通过企业管理器 更改这两张基础表的 fxph字段为 not null
--然后执行下alter table [WORK_DETAIL_H]
alter column [FXPH] [varchar] (20) COLLATE Chinese_PRC_CI_AS not NULL
go
alter table [WORK_DETAIL_S]
alter column [FXPH] [varchar] (20) COLLATE Chinese_PRC_CI_AS not NULL go
alter view view_WORK_DETAIL
as
select * from WORK_DETAIL_H
union all
select * from WORK_DETAIL_S
go
---接着执行
insert into view_WORK_DETAIL values(1,'H','09H001')
go
--就出错了
-- UNION ALL 视图 'view_WORK_DETAIL' 不可更新,因为没有找到分区列。select * from dbo.view_WORK_DETAIL
(1 行受影响)(1 行受影响)
ID LB FXPH
----------- ---- --------------------
1 H 09H001
2 H 09H001(2 行受影响)没错啊
难道万恶的2000有bug?
http://blog.csdn.net/xys_777/archive/2010/07/13/5732206.aspx
之前使用的VPS很不稳定,正好也要到期了,于是我就对了几家的VPS,最终确定是PBS VPS ,套餐选了最廉价的Standard,不过我选到了最想要的机房:HK Mege,这是我目前为止,从HK到国外最快的VPS了。配置:
硬盘:15G
内存:256M
IP : 1个 HK出口(可以提供电信/网通/国际出口)
Hot backup : 1
PBS VPS刚买的时候有点担心,因为一个月180块,如果买便宜的VPS,可以买好多个。在买之前我联系了他们试用了两天,打消了我的疑虑。我主要看中了有HK的出口,还有hot backup的功能,而且那里的NOC团队也给我了很大的帮助。在试用的两天,我装了几次系统和遇到了几个问题,他们的NOC团队总是能给我最好的解决。我让我HK和美国的朋友测试一下到我的网站速度,他们的感觉都是好快的。这点我是比较满意的。
有点不满意的是他们那里提供的VPS只有CentOS版的,我原本想要RHEL版的,不过他那里没有,不过都是相通的,就用了CentOS了。
好了,大家也可以去试试PBS VPS,有想了解的,可以站内发短信给我。
不知道我装的版本有问题还是怎么回事但是如果执行下下面的代码
exec SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
go
update sysobjects set status=6
where xtype='C' and parent_obj in(object_id('WORK_DETAIL_S'),object_id('WORK_DETAIL_H'))
go
exec SP_CONFIGURE 'ALLOW UPDATES',0 RECONFIGURE WITH OVERRIDE
go 就可以了我发现只要我稍微动了下这两个基本表 sysobjects 的 status 值会变了大家给解释下