Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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
如何在oracle中获取语句级触发器中列的新旧值?_Oracle_Plsql - Fatal编程技术网

如何在oracle中获取语句级触发器中列的新旧值?

如何在oracle中获取语句级触发器中列的新旧值?,oracle,plsql,Oracle,Plsql,我有一个名为TestTable的表 Create Table TestTable(ID number,Name nvarchar2(200)) 我想写一个触发器。这是一个语句级触发器。我的问题是: 如何在oracle中获取语句级触发器中列的新旧值 我不能使用行级触发器,因为我需要在触发器中从TestTable中选择行计数。正如注释所述,您不能在语句级访问:new和:old。若触发器看到整个语句,那个么如何定义行值 请使用复合触发器(和)。在那里,您可以编写语句级的部分,并为每一行编写另一个

我有一个名为TestTable的表

Create Table TestTable(ID number,Name nvarchar2(200))
我想写一个触发器。这是一个语句级触发器。我的问题是:

  • 如何在oracle中获取语句级触发器中列的新旧值

我不能使用行级触发器,因为我需要在触发器中从TestTable中选择行计数。

正如注释所述,您不能在语句级访问
:new
:old
。若触发器看到整个语句,那个么如何定义行值


请使用复合触发器(和)。在那里,您可以编写语句级的部分,并为每一行编写另一个
。您将在
语句
级别获得计数,并访问
:old
:new
您将在
上为每个行部分提供的新值和旧值

语句触发器中不可用。也许如果你编辑你的问题,并包括你的触发代码,有人可能会建议解决办法。谢谢。我需要获取列的新值和旧值。因为我用update语句更新触发器中的表。当我更新一个表时,我会得到一个变异的错误。这是一个or问题吗?这是oracle问题您最好的选择是使用复合触发器。祝你好运。我知道它不能在行级trigget中获得新旧值。可以但如何在触发器中更新更多的表行?我只能更新行级触发器中的一行。我无法在语句级触发器中获取新旧值。但是如何更新触发器中的行呢?例如,我有一个测试表。我想更新名为“%El%”的行。你明白我的意思吗?@ElvinHabibov你可以在
中为每行
收集要更新的行ID,然后在
语句
部分处理整个更新。我给你附上了一些链接。如果你需要更多的帮助,请描述你的问题,你有什么数据,你需要做什么等等。ID |姓名1艾文