0
我有一个表如下。MERGE语句中的DELETE子句
Name Null Type
----------- -------- --------------
EMPLOYEEID **NOT NULL** NUMBER
NAME **NOT NULL** VARCHAR2(1000)
AGE *NOT NULL* NUMBER
SALARY NUMBER
DELETEDFLAG NUMBER(1)
我写了MERGE语句来插入,更新,删除记录如下。
MERGE INTO EMPLOYEE tgt USING (
SELECT(SELECT EMPLOYEE.rowId as rid from EMPLOYEE WHERE employeeid = 70) as rid from dual) src ON (tgt.rowid = src.rid)
WHEN MATCHED THEN UPDATE SET name = 'PSS', age = 25, salary = 2589
WHERE employeeid = 70
DELETE WHERE DELETEDFLAG = 1
WHEN NOT MATCHED THEN
INSERT (employeeId, name, age, salary, deletedFlag) VALUES(70, 'TSS', 28, 15000, 0);
我在DELETING记录时遇到问题。当我收到名称,姓名和薪水的空值并且deleteFlag为零时,我想删除这些记录。我只知道雇员ID。 MERGE查询如下。
MERGE INTO EMPLOYEE tgt USING (
SELECT(SELECT EMPLOYEE.rowId as rid from EMPLOYEE WHERE employeeid = 70) as rid from dual) src ON (tgt.rowid = src.rid)
WHEN MATCHED THEN UPDATE SET name = null, age = null, salary = null
WHERE employeeid = 70
DELETE WHERE DELETEDFLAG = 0
WHEN NOT MATCHED THEN
INSERT (employeeId, name, age, salary, deletedFlag) VALUES(70, null, null, null, 0);
我遇到的问题是在这种情况下,它会尝试更新记录。该名称不能为空列,但会尝试使用null进行更新。所以得到了SQL错误。
无法更新(%S)为NULL
如果我通过它的作品如预期的那样不为空值。
任何人都可以请告诉我如何处理这种情况?在更新部分