有关SQL(200分)

  • 主题发起人 主题发起人 3p
  • 开始时间 开始时间
3

3p

Unregistered / Unconfirmed
GUEST, unregistred user!
问题:
1. 我使用sql6.5,编写了某个View,在Sql的系统下的SQL Query tool环境下运行select没问题,但执行Update时,发生错误
"DB-Library Process Dead - Connection Broken"
请问问题何在?
2. 当我在delphi中利用Tquery1构件从此View中游览数据没问题,我设置
利用该tquery构件的cacheupdate,requestlive,以及利用另一UpdateSql构件
更新该View,即更新有关数据表,结果总发生只能更改一条记录,或不能更改,显
示"Generate Sql Error",不知何故?而当我不用View,直接把View中的Sql语句赋给Tquery构件的SQL属性,结果运行错误一摸一样.

(本人判断问题是在于View中的Sql语句,语句例子以下:
create view checkpt (change,nian,yue,fuhe,ptuse,ptname,zbh,lsbh,fapiaoday,remark,inunit,ins,outunit,outs,lb,name,roll_lb,roll_name,indepart,outsource)
as
select a.change,a.mmarky,a.mmarkm,a.ischecked,(select usekind from ptuse where a.ptuse=ptuse.useno),
(select ptname from ptkind where a.ptlb=ptkind.kindno),a.zbh,a.lsbh,a.fapiaoday,a.remark,
a.inunit,a.ins,a.outunit,a.outs,
(select lb from zkm where a.lbno=zkm.lbno),
(select name from clkm where a.lbno=clkm.lbno and a.bhno=clkm.bhno),
(select lb from zkm where lbno=a.lbnoroll),
(select name from clkm where a.lbnoroll=clkm.lbno and a.bhnoroll=clkm.bhno),
(select department from inunit group by no,department having a.sourceno=no),
a.outsource
from clkmgo a
with check option
GO

以上的sql语句从多个表中取数据,但并不违反View的更新原则,更新时一次该一个表的数据,结果出错,我编写了另一个小的简单的View,仅从一个表中取数据,
结果可以更新改动这个view中的数据,当加入另一表的数据时,错误又出来了!
我是在SQL6.5中做的测试,请问这是SQL系统设置问题还是我在什么地方出错了?









 
估计是“违反View的更新原则”了
 
view means view , no update
 
>>view means view , no update

Wrong.
 
yysun,你试过在sql下测试过吗?即使是一个简单的view从2个表中各取1各字段的数据


qwei & wuyi,我说的是Mssql6.5,view--视图是可以用来更新,插入,删除某个表的数据的,清查阅一下Mssql6.5

盼望更准确的帮助!


谢谢!
 
修改是有规则的,在有的情况下的确无法修改,特别牵涉到多表和关键字段.
 
你有没有先在ISQL中测试一下
 
Mssql书中已明确定义了有关View的修改规则,其中规定每次只能修改一个表的数据,
正因我在Isql下测试出错才提出问题,简单例子如
create view test(afield1,afield2)
as
select a.field1,b.field2 from table1 a,table2 b


update test set afield1=xxx
...........
问题出现了!
 
请在 UDATE_SQL中设置相关的修改类型的SQL语句,可以针对多个表进行.

 
多人接受答案了。
 
后退
顶部