触发器问题 当表a中插入一条数据时。把插入的数据存入b表中 怎么写呀????求帮助
发布网友
发布时间:2022-04-09 21:33
我来回答
共4个回答
懂视网
时间:2022-04-10 01:54
因为需要获取 pers 表中插入记录的 ID(本表中字段名为 pid),一开始想着用 LAST_INSERT_ID(),行不通。后来想到 MAX(),倒是能获得最新插入的 pid 值,但 perscn 中的其它值却不能用 SELECT sname FROM pers WHERE pid = MAX(pid); 来获取,看来在 WHERE 语句中是不能用 MAX() 函数吧…… 最后只能用笨办法,先对 pid 进行降序排列,然后用 LIMIT 限制 1 条记录,这样倒是也能获得与 MAX() 函数相同的效果。没办法,就是这么笨……
回到最上面的语法,大致意思是:
1 CREATE TRIGGER 触发器名称
2 在 INSERT、UPDATE或DELETE动作之前或之后
3 ON 上述动作所作用的表
4 FOR EACH ROW(规定语句,照抄吧)
5 以上动作所触发的SQL语句(即正常SQL操作语句)
其中,第5步的 trigger_body 一般只能写一行。如果有多条操作语句,则需要先用 DELIMITER 暂时更改下语句结束符,然后用 BEGIN...END... 语句来写操作语句(因为BEGIN...END...里必须用半角分号 “;” 来标识一行语句的结束,所以才需要用 DELIMITER)。关于更改 DELIMITER,请见官方文档的示例:
1 mysql> delimiter //
2 mysql> CREATE PROCEDURE dorepeat(p1 INT)
3 -> BEGIN
4 -> SET @x = 0;
5 -> REPEAT SET @x = @x + 1; UNTIL @x > p1 END REPEAT;
6 -> END
7 -> //
8 Query OK, 0 rows affected (0.00 sec)
9 mysql> delimiter ;
触发器真是个好东西,自动化的神器啊…… 改天好好再研究研究、发掘发掘~~~
MySQL触发器初试:当A表插入新记录,自动在B表中插入相同ID的记录
标签:logs 自动 相同 开始 示例 insert into sql语句 不能
热心网友
时间:2022-04-09 23:02
交给我吧,这是个最基础的触发器,假设A表的2个字段为ID,name,B表与A表字段相同
create or replace trigger AB_DML_TGR
after insert
on A
for each row
begin
if inserting then
insert into B
values
(:new.ID,
:new.name);
DBMS_OUTPUT.PUT_LINE('新数据已保存到B中');
end if;
end;追问create trigger MyDocFileTrg
on WCMAPPENDIX
for insert,update
as
declare @FILENAME nvarchar(255),
@CRUSER nvarchar(50)
begin
select @FILENAME=APPFILE,@CRUSER=CRUSER from inserted
INSERT INTO XWCMMyDocFileTrg (APPFILE,CRUSER) VALUES (@FILENAME,@CRUSER)
end
我也搞定了
热心网友
时间:2022-04-10 00:20
帮忙看一下这个触发器,要求:当cl_bm中添加一条记录,同时在zd_yz语句中写一条记录,下面触发器没生效
CREATE TRIGGER TR_CLBM_CR
ON CL_BM
FOR INSERT
AS
INSERT
ZD_YZ(LX, BM, DH, MC, DJ, JL, YLDW, JLDW, GG, FYLB, CLLB, STATE, ZXBZ, GBBM, PRINTMC)
SELECT top 1
1, BM, DH, MC, DJ, 1, DW, DW, GG, FYLB = 71, CLLB=0, STATE = 0, ZXBZ = 0 , GBBM, PRINTMC=MC
FROM CL_BM where lb like '2%' and bm not in (select bm from inserted)
热心网友
时间:2022-04-10 01:55
ORACLE正解
...一条数据时。把插入的数据存入b表中 怎么写呀???求帮助
交给我吧,这是个最基础的触发器,假设A表的2个字段为ID,name,B表与A表字段相同 create or replace trigger AB_DML_TGR after insert on A for each row begin if inserting then insert into B values (:new.ID,:new.name);DBMS_OUTPUT.PUT_LINE('新数据已保存到B中');end if;end;...
【sqlserver触发器】在向表A新增一条数据的时候,把这条数据的字段...
这个的话,你这个表里必须要有个主键,否则容易更改了其他数据 给你做个测试,表名叫test 创建 create table test(id int primary key,a int,b int,c int)创建触发器 Create Trigger t_test On test for insertAs declare @id int,@a int,@b intbeginselect @id=id,@a=a,@b=b...
mysql如何通过触发器将一个表的数据新增一条记录后与另一个表匹配运算...
在表A中插入数据的时候在表B中同时插入:判断如果存在ID相同的则对它进行更新,ID不存在则进行插入假如两个表名字为A和B,在插入表A数据的同时对表B进行操作createtriggernode_insertafterinsertonAforeachrowbeginupdateBsetB.ID=NE
SQL中,如何在表A中插入或者更新一条数据的同时能将该数据更新到表B中去...
UPDATE B SET 选修人数 = @xxrs WHERE 科目类型 = @kmlx ELSE INSERT B (科目类型, 选修人数) SELECT @kmlx, @xxrs IF @@ERROR <> 0 GOTO error RETURN error:raiserror('写B表失败', 16, 1)end GO
oracle,插入条数据到表a的同时,怎么取到这条记录的主键值,并且保存到...
insert into 表名B(主键字段) value (select 主键字段 from 表名A where 插入数据的特征字段=XXX) 如果需要同步执行,建议你写存储过程或者触发器 当A表有更新就触发或者调用存储过程 执行2段SQL
插入数据库表中一条记录同时也插入另一个表中的SQL语句怎么写
如果需要一起写入就在程序中直接分别写插入A和插入B表的数据,如果想让数据库自动在插入A表时触发执行插入B表数据,那就要在数据库中定义“触发器”来实现了。
sql用触发器在插入一段数据后提取其中某个字段数据作为另一表相同字段...
create trigger in_sert on 用户表 after insert as begin insert into 教师表(id,注册类型)--这里添加到表的内容自己写 select id,注册类型 from 用户表 where 注册类型=(select 注册类型 from inserted )--这里的字段是你插入用户表的数据 insert into 学生表(id,注册类型)select id,注册类型 ...
SQL2000数据库中,有A和B这2张表,当向A表中插入记录的时候,把满足某些条 ...
create trigger dbo.TriAnyCase on A for insert as if exists (select 'true'from inserted as i where (你的条件,如i.Name <> 'MyName'))insert into B values(i.col1,i.col3,i.col5,i.col7,i.col9)
sql做一个触发器,一个表中添加了一条信息,另一个表中的某个列值就加一...
insert --哪个动作触发as declare @a varchar(100) --定义一个参数 select @a=id from inserted --取插入数据中的id update tableb set n=n+1 where -- 更新另一个表中相同ID的nGOcreate trigger insert_table --创建触发器,触发器名称 insert_table on tablea...
sql server如何创建触发器,使在a表中插入数据时在b表中追加相同的记录...
create trigger insert_for_b on a after insert as begin insert into b(插入a表字段)select 插入a表字段 from inserted --插入a表字段表示a表的所有字段,如果这里需要b表其他字段,要加固定的值 end go