Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 将SQL Server触发器转换为Oracle和master.dbo.sysprocesss-不重复_Sql Server_Oracle_Plsql_Migration_Database Trigger - Fatal编程技术网

Sql server 将SQL Server触发器转换为Oracle和master.dbo.sysprocesss-不重复

Sql server 将SQL Server触发器转换为Oracle和master.dbo.sysprocesss-不重复,sql-server,oracle,plsql,migration,database-trigger,Sql Server,Oracle,Plsql,Migration,Database Trigger,我试着搜索,但找不到我要找的东西。我是SQl Server新手,参与了SQl Server到Oracle的转换,这是手动转换。我只有SQL Server文件 我看到两种类型的SQL Server触发器—用于更新和用于插入。在我看来,它们就像Oracle中的更新和插入触发器之前一样。我想确认这一点,如果你能提供的例子将是伟大的 另外,什么与Oracle中的master.dbo.sysprocesss等效?这是v$session吗?我可以从Oracle中的dual获取用户。这就是下面代码中的nt_用

我试着搜索,但找不到我要找的东西。我是SQl Server新手,参与了SQl Server到Oracle的转换,这是手动转换。我只有SQL Server文件

我看到两种类型的SQL Server触发器—用于更新和用于插入。在我看来,它们就像Oracle中的更新和插入触发器之前一样。我想确认这一点,如果你能提供的例子将是伟大的

另外,什么与Oracle中的master.dbo.sysprocesss等效?这是v$session吗?我可以从Oracle中的dual获取用户。这就是下面代码中的nt_用户名吗

下面是我需要转换为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 server中的触发器不是替代触发器就是后触发器。我希望sql server触发器是一个随机的例子,因为如果它是一个真正的触发器,它会有一些严重的逻辑问题。注意:[Insert/Update/Delete]查询的
相当于
触发器之后的
。@Sean Lange-是的,这是我需要转换的真正触发器。你能建议如何改进这个吗?。您可能应该弄清楚您希望触发器做什么,然后在Oracle中从头开始编写,而不是试图翻译这些。看起来您主要是在设置审计类型列,这很简单;但是不清楚您是想要Oracle用户还是O/S用户,以及其他表(在
from
子句中)在做什么。他们已经存在超过25年了。但更大的问题是您正在更新整个表,而不是新插入的行。您应该加入到“插入”。或者插入了表2,您在发布时更改了名称?