sql-server - 将 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 更新,我应该将这两者结合起来吗?非常感谢大家。
解决方案
推荐阅读
- c# - EF Core MySql 自动增量字段
- python-3.x - 分组后..基于熊猫数据框中的组的列值的总和
- azure - 在 Microsoft Virtual Assistant 和 Skills 之间传递数据
- javascript - 如何使用节点接收数据
- c++ - QTextEdit 中的“选择”和“光标”有什么区别?
- r - 在 R 中绘制数据;错误:未为类型“列表”实现默认方法
- python - Eve + 带有特殊字符的 MongoDB
- mysql - 通过 Matlab 与 MySQL 数据库的操作系统无关连接
- powershell - 无法通过 PowerShell 从 FolderBrowserDialog 创建新文件夹
- reactjs - 从子端进行子组件和父组件之间通信的最佳实践是什么?