+ -
当前位置:首页 → 问答吧 → 求一条update语句,不知能否实现两表update

求一条update语句,不知能否实现两表update

时间:2011-11-24

来源:互联网

tb1
Name Phone
张三 123
李四 123

tb2
Name Phone
张三 123
李四 123


当tb1变成
Name Phone
张三 123
李四 456
王五 123


写什么样的语句让tb2的李四也变成456,并且增加王五这条记录
最后tb2和tb1一样
整个功能如何实现?

tb1因为在另外一台服务器上,只有查询的权限,所以我做不了两表同步更新

作者: ykdrj   发布时间: 2011-11-24

一条语句不能实现两表更新,除非你在一个表上建了触发器.
最好还是分成两句来写.

作者: qianjin036a   发布时间: 2011-11-24

补充一点,如果tb1删除了某条数据,tb2也要跟着删除

作者: ykdrj   发布时间: 2011-11-24

需要在第一张表上写触发器

作者: ssp2009   发布时间: 2011-11-24

触发器?

作者: fredrickhu   发布时间: 2011-11-24

引用 2 楼 ykdrj 的回复:

补充一点,如果tb1删除了某条数据,tb2也要跟着删除

触发器可以实现你的需求。

作者: smilysoft   发布时间: 2011-11-24

大侠们

这句是重点,咋办
tb1因为在另外一台服务器上,只有查询的权限,所以我做不了两表同步更新

作者: ykdrj   发布时间: 2011-11-24

引用 6 楼 ykdrj 的回复:
大侠们

这句是重点,咋办
tb1因为在另外一台服务器上,只有查询的权限,所以我做不了两表同步更新

那等于是tb1你只能查,别的什么也做不了了
写个程序监视吧

作者: pengxuan   发布时间: 2011-11-24

不同步不要紧,我一周去更新一次

但是不知道如何写更新的语句,即能update,又能增加新记录

作者: ykdrj   发布时间: 2011-11-24

写触发器王道啊

作者: wnf2009   发布时间: 2011-11-24

引用 9 楼 wnf2009 的回复:
写触发器王道啊


大哥,tb1只有只读权限啊

作者: ykdrj   发布时间: 2011-11-24

能手工写的尽量不要用那些高级的功能

作者: chenandczh   发布时间: 2011-11-24

写程序 语句类似这样
SQL code

if exists(select [Name] from tb1 where [Name]='张三')
          update tb1 set [Phone]='123' where [Name]='张三'
     else
          insert tb1 values('张三','123')
    end


变量在程序中重新赋值

作者: yanbuodiao   发布时间: 2011-11-24

或者采用Sql中自带的这个

SQL code
MERGE INTO bonuses D
   USING (SELECT employee_id, salary, department_id FROM employees WHERE department_id = 80) S
   ON (D.employee_id = S.employee_id)
   WHEN MATCHED THEN UPDATE SET D.bonus = D.bonus + S.salary*.01
     DELETE WHERE (S.salary > 8000)
   WHEN NOT MATCHED THEN INSERT (D.employee_id, D.bonus)
     VALUES (S.employee_id, S.salary*0.1)
     WHERE (S.salary <= 8000);



我没搞出来…… 网址如下:
http://wsql.iteye.com/blog/1193889

作者: yanbuodiao   发布时间: 2011-11-24