首页 新闻 会员 周边 捐助

视图数据同步问题

0
悬赏园豆:10 [待解决问题]

最近开发遇到一个问题,通过sql语句创建的视图,和直接通过sql语句执行的结果,不一样。

还请大侠们赐教。

艨子的主页 艨子 | 初学一级 | 园豆:73
提问于:2014-05-27 15:35
< >
分享
所有回答(1)
0

你应该把问题问得再高深一点,比如这样:

最近开发遇到一个问题,通过两种不同方法得到的结果,不一样。

这样能回答出来的就更加是大神了。

爱编程的大叔 | 园豆:30844 (高人七级) | 2014-05-27 15:45

USE [oms0208]
GO

/****** Object: View [dbo].[V_OMS_EMPLOYEE_ROLE] Script Date: 05/27/2014 15:57:39 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

 


CREATE VIEW [dbo].[V_OMS_EMPLOYEE_ROLE]
AS
SELECT userCode as [EMPLOYEE_NO]
,b.appId as [APP_ID]
,a.roleId [ROLE_ID]
,100 as [POSITION_DEFAULT]
FROM [T_OMS_EMPLOYEE_ROLE] as a inner join T_OMS_ROLE as b
on a.roleId = b.id

 


GO

 

以上是创建视图的脚本,直接查询这个视图和通过视图中涉及到的sql查询输出的结果不一样

 

支持(0) 反对(0) 艨子 | 园豆:73 (初学一级) | 2014-05-27 15:58

@艨子: 

虽然信息仍是不完整。不过我想问一下,

按照你的说明,我理解是这样的,打开SQL Managerment Studio

执行  Select * from V_OMS_EMPLOYEE_ROLE

和执行 SELECT userCode as [EMPLOYEE_NO]
,b.appId as [APP_ID]
,a.roleId [ROLE_ID]
,100 as [POSITION_DEFAULT]
FROM [T_OMS_EMPLOYEE_ROLE] as a inner join T_OMS_ROLE as b
on a.roleId = b.id

等到的结果不同。是吧?

这是最直接的,无干扰的,能够证明微软数据库引擎BUG的方法。(假设你是使用SQL SERVER)

如果你还使用了Linq to SQL、Entity Framework或是Nhibernate或是其他七七八八的技术,又或是自己拼接了SQL查询,那出问题有时候不能光是怪政府。

最后再唠叨几句:

1、这个世界上有很多数据库,也有很多语言。

2、结果不一样,这几个字太泛了。就跟别人告诉我软件不能用一样,我想说的是,

如果要解决问题,请不要下结论,把你观察到的现象描述出来。

比如象这样:我的电脑坏了(这是结论,这句话对于别人帮助你一点帮助都没有),按下电源开关,听到嘀的一声,但是屏幕上没有任何显示,

主机上有灯亮了,并且有风扇的转动声。(这是现象)

支持(0) 反对(0) 爱编程的大叔 | 园豆:30844 (高人七级) | 2014-05-27 16:34

@爱编程的大叔: 说话上的巨人行动上的矮子,你说了半天。我只看到了一个答案。那就是ms的bug。

支持(0) 反对(0) 艨子 | 园豆:73 (初学一级) | 2014-05-27 17:05

@艨子: 

不说话就能判断问题的,我只见过路上装瞎子的大师。

至于是MS出BUG,或是你出BUG,我只能呵呵了。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30844 (高人七级) | 2014-05-27 17:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册