如何在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时,我想避免更新,否则我想更新我的表。
答案 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。