每当在 PLSQL 中插入新行时,更改前一行和当前行中的列的值
Posted
技术标签:
【中文标题】每当在 PLSQL 中插入新行时,更改前一行和当前行中的列的值【英文标题】:Change the value of a column in previous row and the current row whenever a new row is inserted in PLSQL 【发布时间】:2021-06-02 15:36:59 【问题描述】:假设表名是 abc,**列是 name varchar(20) 和 status varchar(1),** status 可以是 'y' 或 'n' 在插入每个新行时,新行的 status 值必须设置为 'y' 并且上一行的状态值必须设置为“n”。请指导我解决此问题
【问题讨论】:
【参考方案1】:由于您使用的是 pl/sql,因此您可以触发更新前语句。 所以在加载到表格之前,发出这个
sql_stmnt= 'UPDATE table SET status=''n'' WHERE status =''y''';
EXECUTE IMMEDIATE sql_stmnt;
commit;
EXECUTE IMMEDIATE 'INSERT INTO...'
【讨论】:
@KoushikRoy 概述的方法是有效的,但有几个 cmets。首先,**更新后不要提交。显然,您的表必须恰好有 1 行状态为“y”,因此在插入期间发生错误时会发生什么情况。您的数据库现在已损坏,因为没有“Y”状态。这是一个基本事务,两个语句都需要成功,否则都不提交。其次,似乎没有理由使用动态 SQL。如果可用,总是首选静态 SQL。以上是关于每当在 PLSQL 中插入新行时,更改前一行和当前行中的列的值的主要内容,如果未能解决你的问题,请参考以下文章