【问题标题】:Change the value of a column in previous row and the current row whenever a new row is inserted in PLSQL每当在 PLSQL 中插入新行时,更改前一行和当前行中的列的值
【发布时间】:2021-06-02 15:36:59
【问题描述】:

假设表名是 abc,**列是 name varchar(20)status varchar(1),** status 可以是 'y' 或 'n' 在插入每个新行时,新行的 status 值必须设置为 'y' 并且上一行的状态值必须设置为“n”。请指导我解决此问题

【问题讨论】:

    标签: sql database plsql plsqldeveloper dbms-output


    【解决方案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。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    • 2021-12-16
    • 1970-01-01
    • 2016-01-17
    相关资源
    最近更新 更多