如何在oracle中取消更新。?

时间:2014-02-11 05:52:40

标签: oracle

如何在oracle中取消更新。

例如我的查询是:

第1步:

UPDATE CUSTOMER SET Name='Sesuraj',Age='23',Gender='Male';

我的输出是:

Name: Sesuraj, Age: 23, Gender: Male

第2步: 现在我将使用以下查询再次更新我的表:

UPDATE CUSTOMER SET Name='Sesuraj',Age='23',Gender='Male';

我的输出是:

Name: Sesuraj, Age: 23, Gender: Male

所以第1步=第2步

当STEP 1 = STEP 2时,我想避免更新,否则我想更新我的表。

3 个答案:

答案 0 :(得分:0)

根据您的评论,尝试以下方法

DECLARE
    v_count  NUMBER;
BEGIN
    SELECT  COUNT (*)
      INTO  v_count
      FROM  customer
     WHERE  old_date = '<new_date>';

    IF (v_count) < 1
    THEN
        UPDATE  customer
            SET name = 'Abc',
                    old_date = '<new_date>',
                    new_date = '15-Dec-2012';
    END IF;
END;

答案 1 :(得分:0)

很容易

UPDATE CUSTOMER
SET Name = 'Sesuraj',
    Age = '23',
    Gender = 'Male'
WHERE Name != 'Sesuraj',
   OR Age != '23',
   OR Gender != 'Male';

答案 2 :(得分:0)

您可以使用MERGE statement。使用此语句,您可以将INSERT,UPDATE和DELETE插入到一个语句中,具体取决于表中已有的数据。

    MERGE INTO CUSTOMERS t
    USING
    (SELECT 'Sesuraj' AS name, 23 AS age, 'Male' AS gender FROM DUAL) s
    ON
    (s.name=t.name AND s.age=t.age AND s.gender=t.gender)
    WHEN NOT MATCHED THEN INSERT (t.name, t.age, t.gender)
    VALUES (s.name, s.age, s.gender)
    ;

ON子句中,您描述了应该使用哪些数据来查找表中预先存在的行。在这种情况下,行必须完全匹配。如果您只想匹配名称,则可以使用ON (s.name=t.name)

您可以找到a live fiddle here