A. sqlSERVER中同時更新兩表中的數據
如果沒有一定的條件非要更新兩張表,就用兩個UPDATE語句好了,我還沒有使用過單純的直接更新,給你一個關聯兩個表的語句:
UPDATE titles
SET ytd_sales = titles.ytd_sales + sales.qty
FROM titles, sales
WHERE titles.title_id = sales.title_id
AND sales.ord_date = (SELECT MAX(sales.ord_date) FROM sales)
B. 在oracle中怎樣用一條sql語句更新兩張有主外鍵關系的表的記錄
作者表 A (ID,NAME,AGE,SEX)其中ID為主鍵,文章表B(ID,AID,ARTICLE)其中ID為主鍵,AID為外鍵。如果你希望更新表A中某個作者的ID,並同時更新文章表B中對應的數據,那麼寫一個觸發器:
create or replace trigger "A"
after update
of ID
on A_author
for each row
begin
if (:new.ID<>:old.ID ) then
update B_article set AID = :new.ID where AID = :old.ID;
end if;
end A;
C. 在sql裡面如何實現關聯表數據的更新
1.建個觸發器
2.建立個物化試圖(速度快)
CREATE MATERIALIZED VIEW LOG ON name--建立物化視圖日誌保存在特定的表空間
tablespace users; --指定表空間
drop materialized view name;
create materialized view name--創建物化試圖
refresh fast
on commit --在提交後立即刷新
as
select
A.*
from tablename A
D. sql可以兩個表一起更新數據嗎
如果兩個表有關聯的話是可以的,比如A表的id和b表的b_id外鍵關系就可以
update a left join b on a.id = b.b_id set a.name = '',b.name='' (where條件)
E. 使用 sql語句 update 實現更新兩張表的數據
update a set a.FName=b.FName from a inner join b on a.MenuID=b.MenuID
通過表a的MenuID找到表b的FName,並將a表的值更改為b表的值
F. sql中 一條update語句如何更新兩個表的中數據
可以使用insteadof觸發器。
這種觸發器就是用來在更新視圖的時候同時更新多個表數據的。
G. update sql 兩個關聯的表
一、當用一個表中的數據來更新另一個表中的數據,T-SQL提供多種寫法(下面列出了二種),但建議用第一種寫法,雖然傳統,但結構清晰。
並且要注意,當用一個表中的數據來更新另一個表中的數據時,二個表一定要有關聯!
1.
update t1
set t1.c2 = t2.c2
fro m t2
where t1.c1 = t2.c1
2.
Update t1
set t1.c2 = t2.c2
fro m t1 inner join t2
on t1.c1 = t2.c1
二、FROM 子句中指定的表的別名不能作為 SET column_name 子句中被修改欄位的限定符使用。
例如,下面的內容無效:
UPDATE titles
SET t.ytd_sales = t.ytd_sales + s.qty
FROM titles t, sales s
WHERE t.title_id = s.title_id
AND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales)
若要使上例合法,請從列名中刪除別名 t 或使用本身的表名。
1.
UPDATE titles
SET ytd_sales = t.ytd_sales + s.qty
FROM titles t, sales s
WHERE t.title_id = s.title_id
AND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales)
2.
UPDATE titles
SET titles.ytd_sales = t.ytd_sales + s.qty
FROM titles t, sales s
WHERE t.title_id = s.title_id
AND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales)
H. sql server 如何同時更新兩張有關系的表
可以使用事務,但是只有當兩張表都被更新了才會執行成功,否則事務回滾.
例如:
begin tran --開始執行事務
update bb set moneys=moneys-@momeys where ID=@fromID -執行的第一個操作,轉賬出錢,減去轉出的金額
update bb set moneys=moneys+@momeys where ID=@toID --執行第二個操作,接受轉賬的金額,增加
if @@error<>0 --判斷如果兩條語句有任何一條出現錯誤
begin rollback tran –開始執行事務的回滾,恢復的轉賬開始之前狀態
return 0
end
go