SQL数据库触发器,当表1被修改一个字段,表2就跟着修改一个字段。

现在数据库里面有两张表,一张是C_Head,另一张是C_DetailC_Detail表里面有两个字段ISUSE(使用状态),INCODE(单号),且表里面ISUSE字段只... 现在数据库里面有两张表,一张是C_Head,另一张是C_Detail
C_Detail 表里面有两个字段 ISUSE(使用状态),INCODE (单号),且表里面ISUSE字段只有两种状态,Y和N 。(初始值是N)
C_Head 表里面也有两个字段 CANUSE(可使用),INCODE(单号)
现在需求是,想写一个触发器,当C_Detail表里面其中一行数据ISUSE字段被修改成Y的时候,事件就被触发,将INCODE捕获,根据INCODE修改C_Head表里面的CANUSE的数量。(select @CANUSE=sum(1) from C_Detail where INCODE=@INCODE and ISUSE='N' ; update C_Head set CANUSE=@CANUSE where INCODE=@INCODE)

求大神解决 !!高悬赏!!
展开
 我来答
a641203337
2013-05-09
知道答主
回答量:5
采纳率:0%
帮助的人:10.2万
展开全部
ALTER TRIGGER [dbo].[T_Update]
ON [dbo].[C_Detail]
FOR UPDATE
AS
DECLARE @INCODE INT;
DECLARE @SUM INT;
SELECT @INCODE = INCODE FROM deleted;
IF (exists (SELECT * FROM C_Head WHERE INCODE = @INCODE))
BEGIN
SELECT @SUM=SUM(1) FROM C_Detail WHERE INCODE = @INCODE and ISUSE='N';
UPDATE C_Head SETCANUSER=@SUMWHERE INCODE = @INCODE;
END
辰光熹微Sl
2013-05-09 · 超过40用户采纳过TA的回答
知道小有建树答主
回答量:196
采纳率:0%
帮助的人:120万
展开全部
CREATE OR REPLACE TRIGGER TR_UP_HEAD
BEFORE UPDATE ON C_DETAIL
DECLARE
SQL_TXT ORA_NAME_LIST_T;
T_INCODE VARCHAR2(10);

BEGIN
N:=ORA_SQL_TXT(SQL_TXT)
FOR I IN 1..N LOOP
UPDATE C_DETAIL SET ISUSE='Y'
END LOOP
追问
DECLARE
SQL_TXT ORA_NAME_LIST_T; 这里不懂:ORA_NAME_LIST_T这个不是类型。
后面LOOP里也没看懂,我是想当那个状态被修改为Y的时候才执行触发器,修改C_Head表里面的数据。且是要按照INCODE去修改。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式