[英]Update table on condition from another table Trigger
我有兩個桌子
MovieStar (
name: char(15),
address:varchar(40),
gender:char(1),
birthdate: date,
rating:float
)
StarsIn (
movieTitle:char(25),
movieYear:int,
starname:char(15),
role:varchar(15)
)
starName
是與MovieStar
名稱相關的外鍵。
當插入Starsin
記錄且新記錄的角色為“主要”時,我想將等級提高1
它會做的是;
on insert to starsin, check whether role = 'main'
if so, what is starname
increment rating of moviestar name = starname
我不會將價值rating
存儲在您的表中,因為它可以在需要時從其他表的數據派生。 為什么要使用float
進行計數?
創建一個VIEW
,根據您的條件role = 'main'
對Starsin
的行進行Starsin
,然后就不需要觸發器,並且在添加或刪除新行時該計數始終是最新的。
使用觸發器解決方案,您還必須考慮行刪除以減少計數。
編輯:根據您的評論,這是一個示例觸發器(盡管語法可能是錯誤的,因為我主要使用SQL Server。) 我假設MovieStar
表中的name
字段是主鍵,因此是唯一的。
CREATE TRIGGER UpdateRating AFTER INSERT ON StarsIn
FOR EACH ROW
BEGIN
UPDATE MovieStar SET rating =
(SELECT rating FROM MovieStar WHERE name = NEW.starname) + 1
FROM MovieStar INNER JOIN NEW ON MoveStar.name = NEW.starname
WHERE NEW.role = 'main'
END
我不熟悉MySQL,但我使用SQL Server,因此需要基於觸發器進行設置。 我猜觸發器的FOR EACH ROW
部分意味着對插入的每一行都執行了該語句,但是我對此可能是錯的。
您需要create a trigger on insert
上create a trigger on insert
並執行預期的update
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.