首页 > 解决方案 > 将 SQL Server 触发器转换为 Oracle 和 master.dbo.sysprocesses - 不重复

问题描述

我尝试搜索,但找不到我正在寻找的确切内容。我是 SQl Server 的新手,涉及到 SQL Server 到 Oracle 的转换,它是手动转换。我只有 SQL Server 文件。

我看到两种类型的 SQL Server 触发器 - FOR UPDATE 和 FOR INSERT。他们在我看来就像在更新之前和在 Oracle 中插入触发器之前一样。我想确认一下,如果你能提供一些很好的例子。

另外,什么是相当于 Oracle 中的 master.dbo.sysprocesses 的?这是 v$session 吗?我可以在 Oracle 中从双重获取用户。这是下面代码中的 nt_username 吗?

这是我需要转换为 Oracle 的典型代码示例 - 这是在插入之前吗?

CREATE TRIGGER trigger_name ON dbo.table_name
FOR Insert AS
declare @InsertUser varchar(32)
BEGIN
SELECT @InsertUser = nt_username from master.dbo.sysprocesses where spid = @@spid
Update table_name
SET dCreateDate = GETDATE(), cCreateUser = @InsertUser
FROM table1 a ,table2 i WHERE a.tab_id = i.tab_id
END
GO

更新触发器 - 更新前?

CREATE TRIGGER trigger_name ON dbo.table_name
FOR UPDATE AS
declare @UpdateUser varchar(32)
if not update(CreateUser) and not update(CreateDate)
BEGIN
SELECT @UpdateUser = nt_username from master.dbo.sysprocesses where spid = @@spid
Update table_name
SET UpdateDate = GETDATE(), UpdateUser = @UpdateUser
FROM table1 a ,table2 i WHERE a.tab_id = i.tab_id
END
GO

如果在 Oracle 中插入... elsif 更新,我应该将这两者结合起来吗?非常感谢大家。

标签: sql-serveroracleplsqlmigrationdatabase-trigger

解决方案


推荐阅读