程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在oracle中选择最后更新的行大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决在Oracle中选择最后更新的行?

开发过程中遇到在Oracle中选择最后更新的行的问题如何解决?下面主要结合日常开发的经验,给出你关于在Oracle中选择最后更新的行的解决方法建议,希望对你解决在Oracle中选择最后更新的行有所启发或帮助; | 如何获得上次更新的行或记录在Oracle数据库中? 我想确保触发一个触发器,以检查最后更新的行是否具有所有大写条目,如果没有,则将它们转换为大写。     

解决方法

        只需编写一个触发器即可:
create trigger myTable_trg
before insert or update on myTable
for each row
begin
   :new.col1 := upper(:new.col1);
   :new.col2 := upper(:new.col2);
end;
触发器将针对插入或更新的每一行触发,因此无需“查找”该行。     ,        SQL是一种基于集合的语言。如果要更新几行,则没有“最后更新的行”的概念。 确保您的API插入UPPER(column_name)似乎是您想要的。 您还可以创建行更新触发器,该触发器执行以下操作:
:new.column_name := upper(:new.column_Name);
但这将比在API中提供大写的column_name效率低。 问候, 抢。     ,        许多Oracle开发人员将尝试告诉您触发器不是一个好主意,并且如果尝试了所有其他方法,则实际上仅应将其用作解决问题的最后手段。他们经常习惯于做从未真正设计过的事情。 Tom Kyte在《 Oracle杂志》的这篇文章中描述了避免触发的一些原因。 Rob van Wijk在回答中说,用于修改数据的API应注意确保仅插入大写数据。替代方法是在列上创建检查约束,以便仅可以添加大写数据。
SQL> create table my_temp_table (
  2  col_1 varchar2(50) check (col_1 = upper(col_1))
  3  );
Table created.
建表然后尝试插入一些无效的内容,并且检查约束将引发错误。
SQL> insert into my_temp_table values (\'data\');
insert into my_temp_table values (\'data\')
*
ERROR at line 1:
ORA-02290: check consTraint (EMIR_MONTHLY_PAl.SYS_C00113139) violated
有效数据将毫无问题地输入。
SQL> insert into my_temp_table values (\'DATA\');

1 row created.
    ,        您可以使用
return rowid into
获得最后更新的行的rowid 在SQLPlus中:
create table t (id number,val varchar2(10));
insert into t (id,val) values(1,\'abc\');

var rid varchar2(100);

update t set val = \'xxx\' where id = 1 return rowid into :rid;

SELEct * FROM t where rowid = :rid;
    

大佬总结

以上是大佬教程为你收集整理的在oracle中选择最后更新的行全部内容,希望文章能够帮你解决在oracle中选择最后更新的行所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。