问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求教:SQL中触发器、存储过程(SQL 2000)

发布网友 发布时间:2022-04-11 17:23

我来回答

3个回答

热心网友 时间:2022-04-11 18:52

先创建表:
create table a(pid char(30),price char(10),ptime smalldatetime,gid char(10));
create table b(pid char(30),price1 char(10),price2 char(10),ptime1 smalldatetime,gid1 char(10));

创建触发器:
create trigger insertlast
on b after insert as
begin
declare @price2 char(10),@ptime1 smalldatetime,@gid1 char(10),@pid char(30);
set @pid=(select pid from inserted);
set @price2=(select top 1 price from a where pid=(select pid from inserted) order by ptime desc);
set @ptime1=(select top 1 ptime from a where pid=(select pid from inserted) order by ptime desc);
set @gid1=(select top 1 gid from a where pid=(select pid from inserted) order by ptime desc);
update b set price2=@price2,ptime1=@ptime1,gid1=@gid1
where b.pid=@pid;
end;

数据表的字段属性不一定符合你的要求,你可以适当改正。

经测试,通过!

热心网友 时间:2022-04-11 20:10

create trigger tr_name on 表B
instead of insert,update
as
begin
delete 表B from 表B inner join deleted on ...--表B主键关联

go
insert into 表B(品号,本次进价,本次供应商,上次进价,上次进货时间,上次供应商代码)
select a.品号,a.本次进价,a.本次供应商,b.进价,b.时间,b.供应商代码
from inserted a,
(select 品号,进价,时间,供应商代码 from 表A where 时间=(select max(时间) from 表A as MT where MT.品号=表A.品号) b
where a.品号=b.品号;
go
end

热心网友 时间:2022-04-11 21:45

B表主键是?
create trigger b_insert
on b
AFTER insert
as
begin
declare @品号 varchar(20)
select @品号=品号 from inserted
update t1 set 上次进价=t2.进价,上次进货时间=t2.时间,上次供应商代码=t2.供应商代码 from B t1
inner join (select top 1 t1.* from A t1
inner join inserted t2 on t1.品号=t2.品号
order by 时间 desc) t2 on t1.品号=t2.品号 and t1.上次供应商代码 is null
end
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 sql 触发器或存储过程问题求助 interbase开发问题:如何在触发器语句中获取当前登录的用户名? 想在SQL server做一个触发器:新建一个表来记录打开这个功能的操作者,记录当前登录应用系统的这个用户 sql触发器 获取用户名和ip 如何在SQL触发器中获取当前的 USERID 关于sqlServer2000和sqlServer2008的问题 sql2000升级到sql2008,客户端不能连接数据库 关于sql数据库由sql2000升级到sql2008的问题 Sql server2000的数据升级到sql server2008的问题:[Sql Server]找不到存储过程 SQL Server2000升级到SQL Server 2008,在升级规则这一步报错,求大神告知!!! 想从SqlServer2000升级到sqlserver2008,请问有什么注意事项 c#判断datatable中字段的值是否发生变化 有一张数据表,有三个字段(N行数据),用SQL判断如果第1字段有数据则将第1字段的数据显示到新字段上 触发器:当SQL插入或更新时判断写入值,当满足某条件后修改写入值,如何实现? SQL中更新字段if update(column_name)怎么获取被更新的column_name的值 mysql 先判断表中的某一字段 如果为空 插入数据 否则 更新该条数据 SQL触发器根据判定字段决定是否插入数据到另外一个数据表 如何判断列中的数据是否已经更改,如果更改了就触发触发器? oracle 修改一个表中数据 怎么判断哪个字段被修改 在页面上修改某个字段时,如何在提交时判断该字段有没有被修改过 菜鸟求助~~~,一条数据库语句看不明白(高分回报) sql server中的存储过程问题 忘大家帮助 菜鸟级别 谢谢前辈指导!! asp Execute(include()) 的使用方法? T-SQL 新建数据可中的 N 是干社么用的 sql 2000修改sa密码时提示:未能找到存储过程 'sp_password'。 判断触发器正在处理的是插入,删除还是更新触发 sql serve里,有关触发器的函数deleted,Inserted文献?急 sql server 2005在使用触发器时,INSERTED表和DELETED表的作用是什么? SQL试题:哪种操作会导致触发器产生deleted表? SQL满足条件后自动更新一个置(SQL触发器)? C语言shellexecute函数的用法 sql Update时变量值为Default报错 ShellExecute,CreateProcess三个函数的区别和联系 如何阻塞调用ShellExecute函数 sqlserver如何带列名导出sql脚本 MS SQLServer 怎么将整个表的数据 生成 插入脚本 ? sqlserver导出脚本 有多大 在SQL Server 2005数据库中,对存储过程的描述正确的是()。(选一项) SQL server2005如何一次性插入多个存储过程 Sqlserver2005数据库如何写带参数的存储过程?