注册 登录
编程论坛 SQL Server论坛

UPDATE 兩個表,懂得回答

jxyga111 发布于 2008-11-13 17:28, 2199 次点击
表1:A 主表
表2:B 明細
A:
ID     NAME     SEX


B:
ID NAME
主表有資料,明細無資料
要根所主表來更新明細。
只能用UPDATE

PS:聲明我是中國人

[[it] 本帖最后由 jxyga111 于 2008-11-13 20:26 编辑 [/it]]
13 回复
#2
chinasj2008-11-13 17:47
没明白说的啥意思
#3
西风独自凉2008-11-13 17:56
他的表達能力實在是。。。。
#4
小仙2008-11-13 18:38
这个句子用到了几种转义和语序颠倒,简单的说,就是病句。
咱们这虽然是技术论坛不谈文学,可起码基本的语言交流要满足噻。
#5
西风独自凉2008-11-14 17:40
#6
happynight2008-11-15 23:37
你是否想问的是 想用一条SQL语句同时更新两个表中的数据
如果是直接用SQL语句 我想应该是不可以的吧 测试了下 也是不行
如果在两张表上面建立视图 理论上是应该可行的 查了下资料
-------------------------------------------------------------
SQL Server 2000
可更新视图可以更改该视图涉及的多个表。只要 SQL Server 可将用户的更新请求明确地翻译为对视图定义中所引用基表的更新,则 DELETE、INSERT 和 UPDATE 语句可引用视图。
当处理可更新视图时,其中视图中的多个表包含在 DELETE、INSERT 或 UPDATE 语句中,行为应不同。
-------------------------------------------------------------
但是模拟了下 运行仍然报错 不知有哪位置高手能给个范例
#7
happynight2008-11-15 23:43
通过视图修改数据
可以按下列方式通过视图修改数据:

使用具有支持 INSERT、UPDATE 和 DELETE 语句的逻辑的 INSTEAD OF 触发器。


使用修改一个或多个成员表的可更新分区视图。
如果视图不使用 INSTEAD OF 触发器或者不是可更新分区视图,则只要符合下列条件,仍可更新:

如果视图不使用 INSTEAD OF 触发器或者不是可更新分区视图,则只要符合下列条件,仍可更新:

视图在视图定义的 FROM 子句中包含至少一个表;视图不能只基于一个表达式。


在选择列表中没有使用聚合函数(AVG、COUNT、SUM、MIN、MAX、GROUPING、STDEV、STDEVP、VAR、VARP)或 GROUP BY、UNION、DISTINCT 或 TOP 子句。但是,可以在 FROM 子句定义的子查询范围内使用聚合函数,前提条件是聚合函数生成的派生值没有修改过。


说明  使用 UNION ALL 运算符的分区视图是可更新视图。

在选择列表中不使用派生列。派生列是由除简单列引用以外的一切构成的结果集列。
通过视图修改数据的准则
不使用 INSTEAD OF 触发器或可更新分区视图而通过视图修改数据之前,请考虑下列准则:

如果在视图定义中使用了 WITH CHECK OPTION 子句,则所有在视图上执行的数据修改语句都必须符合定义视图的 SELECT 语句中所设定的条件。如果使用了 WITH CHECK OPTION 子句,修改行时需注意不让它们在修改完成后从视图中消失。任何可能导致行消失的修改都会被取消,并显示错误信息。


SQL Server 必须能够明确地解析对视图所引用基表中的特定行所做的修改操作。不能在一个语句中对多个基础表使用数据修改语句。因此,列在 UPDATE 或 INSERT 语句中的列必须属于视图定义中的同一个基表。


对于基础表中需更新而又不允许空值的所有列,它们的值在 INSERT 语句或 DEFAULT 定义中指定。这将确保基础表中所有需要值的列都可以获取值。


在基础表的列中修改的数据必须符合对这些列的约束,如为空性、约束、DEFAULT 定义等。例如,如果要删除一行,则相关表中的所有基础 FOREIGN KEY 约束必须仍然得到满足,删除操作才能成功。


分布式分区视图(远程视图)不能使用键集驱动游标更新。此项限制可通过在基础表上而不在视图本身上声明游标得到解决。
此外,如果在视图中删除数据:

在视图定义的 FROM 子句中只能列出一个表。
不能在视图中与text、ntext 或 image 列一起使用 READTEXT 和 WRITETEXT 语句。

-----------------------------------------
文字太多了 看的头晕 还是没看明白
#8
cupt2008-11-18 13:53
UPDATE A
SET xxx
from A inner join B
on 。。。
where。。。
#9
jxyga1112008-11-18 14:03
用連接不行
#10
jxyga1112008-11-18 14:03
回复 6# 的帖子
對,但是不能夠建視圖
#11
happynight2008-11-18 15:21
[bo][un]jxyga111[/un] 在 2008-11-18 14:03 的发言:[/bo]

對,但是不能夠建視圖

这样 我没有办法了 不知道你有什么好办法吗
#12
jxyga1112008-12-02 09:53
我就是沒辦法才上來問的
#13
西风独自凉2008-12-02 12:08
以下是引用jxyga111在2008-12-2 09:53的发言:

我就是沒辦法才上來問的


看到有關你的問題﹐呼略....
#14
西风独自凉2008-12-02 12:09
還是提示下﹐

會寫trigger 波﹖
1