永发信息网

有两个表A,B,如何用SQL语句,更新A表中的一个记录的字段,并将更新后的这条记录插入到B表

答案:3  悬赏:60  手机版
解决时间 2021-05-07 18:32
  • 提问者网友:谁的错
  • 2021-05-07 04:57

编辑 删除 回复 有两个表A,B,如何用SQL语句,更新A表中的一个记录的字段,并将更新后的这条记录插入到B表欣梦 27分钟前 我是这么写的,编译后有错误, String sql="update A set STATE=1 where ID=? "+
               " insert into B(ID,LNAME,ROLE,GROUP_ID,STATE) select ID, NAME,ROLE,GROUP_ID,STATE from A; 插入操作是不是原表的记录删除了呢,还有A和B的字段不太一样,怎么办哈?

各位,帮帮忙的说~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

最佳答案
  • 五星知识达人网友:封刀令
  • 2021-05-07 05:48

--随便搞搞,不想多写。环境为sql server 2000


CREATE DATABASE TEST;


CREATE TABLE A(
 ID INT,
 LNAME VARCHAr(20),
 ROLE VARCHAr(20),
 GROUP_ID INT ,
 STATE VARCHAr(20)
);


--复制A表结构到B
SELECt * INTO B FROM A WHERe 0=1;



CREATE TRIGGER COPY
    ON A    --在A表中创建触发器
    FOR UPDATe    --为更新事件触发
    AS    --事件触发后所要做的事情
    IF UPDATE(STATE)    
    
    BEGIN
 SET INSERT INTO B (ID,LNAME,ROLE,GROUP_ID,STATE)
    SELECT I.ID,I.LNAME,I.ROLE,I.GROUP_ID,I.STATE
  FROM INSERTED I    --INSERTED临时表
  
    END;


--以下为测试数据
INSERT INTO A VALUES(3,'ZHU','ADMIN',1,'TERMINATAL');


UPDATe A SET STATE = 'REUSE' WHERe A.ID = 3;


SELECT * FROM B;

全部回答
  • 1楼网友:千夜
  • 2021-05-07 08:13
建议不要用触发器 在服务器接近满载的时候!触发比较频繁的时候 比较容易出现问题!建议用事务去处理!
  • 2楼网友:煞尾
  • 2021-05-07 07:16
写个事务或者写一个触发器 在添加A表时候 同时向B表插入一条新语句
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯