WEB开发网
开发学院数据库Oracle 从SQL SERVER 向ORACLE 8迁移的技术实现方案(2) 阅读

从SQL SERVER 向ORACLE 8迁移的技术实现方案(2)

 2008-09-08 12:52:54 来源:WEB开发网   
核心提示: <3>、从SQL SERVER向ORACLE的迁移方案1、通过比较上面SQL语法的不同并考虑现有SQL SERVER的实际编程风格,在从T-SQL向PL/SQL迁移时,从SQL SERVER 向ORACLE 8迁移的技术实现方案(2)(2),要遵守下面规则:1> 在CRE

<3>、从SQL SERVER向ORACLE的迁移方案

1、通过比较上面SQL语法的不同并考虑现有SQL SERVER的实际编程风格,在从

T-SQL向PL/SQL迁移时,要遵守下面规则:

1> 在CREATE TRIGGER定义中采用AFTER关键字,即调整为事后触发器。

2> 在CREATE TRIGGER定义中采用FOR EACH ROW关键字,即调整为行级触发

器。

3> 将触发器主体中的“inserted”调整为“:new”,将“deleted”调整为“:old”。

4> 在触发器主体中禁用CURSOR操作:new与:old。

5> 在触发器主体中禁用COMMIT、ROLLBACK、SAVEPOINT等事务控制语句。

2、用触发器解决ID列向SEQUENCE迁移的问题:

下面的GenerateStudentID触发器使用了:new。这是一个before INSERT触

发器,其目的是使用student_sequence序列所产生的数值填写

students表的ID字段。

例:

CREATE OR REPLACE TRIGGER GenerateStudentID
BEFORE INSERT ON students
FOR EACH ROW
BEGIN
SELECT student_sequence.nextval
INTO :new.ID
FROM dual;
END;

在上面的触发器主体中,GenerateStudentID实际上修改了:new.ID的值。这

是:new最有用的一个特性——当该语句真正被执行时,:new中的存储内容就

将被使用。有了这个触发器,我们就可以使用下面这样的INSERT语句,而不

会产生错误:

INSERT INTO students (first_name, last_name)

VALUES (‘LUO’, ‘TAO’) ;

尽管我们没有为主键列ID(这是必需的)指定取值,触发器将会提供所需要

上一页  1 2 3 4 5 6 7  下一页

Tags:SQL SERVER ORACLE

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接