Oracle复制行记录到同一个表(两种写法)
通过循环,判断记录是否存在,不存在时插入数据
插入数据时,可以更新插入数据指定字段的值
请根据实际项目需要改写SQL
DECLARE
CURSOR dept_cursor IS
SELECT *
FROM table_A
WHERE ID = '4879D2EFEDB448C4910EC973EAE3B9CE';
recordnum VARCHAR2(50); --定义变量
BEGIN
--检查记录是否存在
SELECT COUNT(1)
INTO recordnum
FROM table_A t
WHERE t.id= 'BC92F9700F2C44D7A3CC150F45BA90A4'
AND t.DATETIME_CREATED = TRUNC(SYSDATE);
FOR row_data IN dept_cursor LOOP
--更新id 和创建时间
row_data.id := sys_guid();
row_data.DATETIME_CREATED := trunc(SYSDATE);
--判断记录,不存在则插入
IF (recordnum = 0)
THEN
INSERT INTO table_A VALUES row_data;
COMMIT;
ELSE
dbms_output.put_line('记录已存在,插入失败');
END IF;
END LOOP;
END;
insert into table_a(id,create_time,update_time,create_user) select sys_guid(),sysdate,update_time,create_user from table_a where id='123456';