每当在 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 中插入新行时,更改前一行和当前行中的列的值的主要内容,如果未能解决你的问题,请参考以下文章

VIM文本编辑器

如何“完成”新行

如何在插入新行后立即将自动生成的主键值保存到第二列

如果 ID 匹配在其他列中插入新行和总值

在 UITableView 中插入最后一行并平滑滚动

vba代码根据两列条件插入新行