有谁能帮个忙呢?解决马上结贴

HappyDelphiGirl 2003-10-22 10:36:24
有谁能将如下的Oracle转为SQL Server的触发器呢? 在线等待
create or replace trigger tri_classinfo_tmp
after insert on classinfo_tmp for each row
declare
v_cnt number(3);
begin
select count(*) into v_cnt from classinfo
where class_seq=:new.class_seq;
if v_cnt=0 then
insert into classinfo(class_seq,
class_type,
class_name,
manager)
values(:new.class_seq,
:new.class_type,
:new.class_name,
:new.manager
);
else
update classinfo set class_type=:new.class_type,
class_name=:new.class_name,
manager=:new.manager
where class_seq=:new.class_seq;
end if;


end;
...全文
25 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xjwxiong 2003-10-23
  • 打赏
  • 举报
回复
可以使用Table Name 做為UPDate 的值
語法:
update classinfo set classinfo.class_type=inserted.class_type,
classinfo.class_name=inserted.class_name,
classinfo.manager=inserted.manager
from inserted ----新加
where classinfo.class_seq=inserted.class_seq
另外:
在Sql Server 中 的變量必須以@ 開頭

試試看!

HappyDelphiGirl 2003-10-22
  • 打赏
  • 举报
回复
现在最主要的是如何得到插入的这条记录的所有字段值了
HappyDelphiGirl 2003-10-22
  • 打赏
  • 举报
回复
SQL Server怎么就这么难用呀,我们用Oracle一下子就可以搞定!
HappyDelphiGirl 2003-10-22
  • 打赏
  • 举报
回复
CREATE TRIGGER test ON classinfo_tmp
FOR INSERT
AS
declare @v_cnt smallint
select v_cnt=count(*) from ClassInfo where class_seq= inserted.class_seq
if v_cnt=0
begin
insert into classinfo(class_seq,
class_type,
class_name,
manager)
values( inserted.class_seq,
inserted.class_type,
inserted.class_name,
inserted.manager
)
end
else
begin
update classinfo set class_type=inserted.class_type,
class_name=inserted.class_name,
manager=inserted.manager
where class_seq=inserted.class_seq
end


服务器: 消息 128,级别 15,状态 1,过程 test,行 12
在此上下文中不允许使用 'class_seq'。此处只允许使用常量、表达式或变量。不允许使用列名。
welyngj 2003-10-22
  • 打赏
  • 举报
回复
try:create trigger tri_classinfo_tmp
on classinfo_tmp
after insert
as
begin
declare @v_cnt int

set @v_cnt=( select count(*) c from classinfo c,inserted i
where c.class_seq=i.class_seq)
if @v_cnt=0
insert into classinfo(class_seq,
class_type,
class_name,
manager)
select class_seq,class_type,class_name,manager from inserted

update classinfo set class_type=i.class_type,
class_name=i.class_name,
manager=i.manager from inserted i
where class_seq=i.class_seq

end

xjwxiong 2003-10-22
  • 打赏
  • 举报
回复
試試吧!
語法差不多
可能需要調試

CREATE TRIGGER test ON classinfo_tmp
FOR INSERT
AS
declare @v_cnt smallint
select v_cnt=count(*) from where class_seq= inserted.class_seq
if v_cnt=0
begin
insert into classinfo(class_seq,
class_type,
class_name,
manager)
values( inserted.class_seq,
inserted.class_type,
inserted.class_name,
inserted.manager
)
end
else
begin
update classinfo set class_type=inserted.class_type,
class_name=inserted.class_name,
manager=inserted.manager
where class_seq=inserted.class_seq
end



SQL Server Tigger Example:
USE pubs
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'employee_insupd' AND type = 'TR')
DROP TRIGGER employee_insupd
GO
CREATE TRIGGER employee_insupd
ON employee
FOR INSERT, UPDATE
AS
/* Get the range of level for this job type from the jobs table. */
DECLARE @min_lvl tinyint,
@max_lvl tinyint,
@emp_lvl tinyint,
@job_id smallint
SELECT @min_lvl = min_lvl,
@max_lvl = max_lvl,
@emp_lvl = i.job_lvl,
@job_id = i.job_id
FROM employee e INNER JOIN inserted i ON e.emp_id = i.emp_id
JOIN jobs j ON j.job_id = i.job_id
IF (@job_id = 1) and (@emp_lvl <> 10)
BEGIN
RAISERROR ('Job id 1 expects the default level of 10.', 16, 1)
ROLLBACK TRANSACTION
END
ELSE
IF NOT (@emp_lvl BETWEEN @min_lvl AND @max_lvl)
BEGIN
RAISERROR ('The level for job_id:%d should be between %d and %d.',
16, 1, @job_id, @min_lvl, @max_lvl)
ROLLBACK TRANSACTION
END




【特征工程是什么?】 身高不同的两人,比较体重毫无意义, 但是如果将身高体重加以计算,转化成了BMI指数:BMI=体重/(身高^2) 通过比较这个新创造的特征值,谁胖谁瘦就一目了然了。 这就是特征工程,将原始数据转换为可以更好的、代表预测模型潜在问题的特征,通过分析这个新的特征,可以得到更准确的预测结果。 【特征工程——Python数据分析必备】 脏数据的“清洗剂” 有人说:学会了Python语言,就会做数据分析? 不一定! 你拿到的数据样本集,有可能存在这些问题: 如果样本数据存在问题,对数据建模的执行效率会有很大影响,甚至可能会造成模型结果的偏差。 不懂特征工程,数据分析=白一场! 【站内首门!特征工程全解课程】 过去,数字化是企业优化的要点; 而今,数字化成为了企业活下去的关键。 而数据分析应用有多广,特征工程的学习需求就有多大。 不过,大部分课本对于特征工程这一知识点鲜有提及,市面上的课程也少之又少,导致很多人在实际工作或学习中,遇到问题束手无策,严重降低效率。 CSDN全站首发——Python数据处理与特征工程 课程聚焦数据科学中,数据清洗与分析前的特征提取过程,解决数据科学中最重要的原始数据清洗和特征提取。 【定制课程 精准扫除学习盲点】 课程充分考虑各类实际问题,将每个知识点融入到对应的代码实例中,初学者也可无压力上手,讲师手把手带领入门。 知识点扫盲 + 案例实践 + 线上答疑 扫清数据分析前的所有障碍,提升你的数据工作的效率与准确度。 如果你是: 在这里你可以收获...... 了解如何将各类型数据载入计算机,进而愉快的探索数据科学; 掌握如何将需要分析的数据转化为算法模型可以接受的格式; 学会特征提取最基本的处理方式,为后续的算法学习打好基础。 经过19节课程的学习,你可以基本掌握数据采集、读取以及清洗的方法,具备进一步学习数据分析乃至深度学习的能力,能够大大拓宽你日后的求职道路。 【三重福利  惊喜等你】

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧