在oracle 数据库 中,如何在同张表内从查询到一行后将它修改到另一行?
在oracle 数据库 中,如何在同张表内从查询到一行后将它修改到另一行?新的一行主键已经创建。其他内容一致。
比如,查询到行 A: PID(主键)---名称---代号---步骤---效果图路径
0001 ----苹果4---IP4---下单中---D:\苹果图
现在已经有一行,主键已经创建好。
B: 0032(已经创建) ----空---空---空---空
修改后结果
B: 0032 ----苹果4---IP4---下单中---D:\苹果图
请问怎么用SQL语句完成以上的效果?
补充:A和B表示行A和行B,是在同一张表上操作,最后结果是,在同一张表上,出现主键不相同的的,但是其他信息相同的两个行。
追问:只针对单行数据的复制和修改。
可以以上面的情况写个范本存储过程么?
谢谢是在同一张表上操作。 A,和B是表示
行A,和行B
答案:这个估计得用存过程,或者事物来实现!
如果是操作多条数据,在存储过程中建立一个索引 做个循环。
其他:恩 你我同意楼上 你看看 b表主键和a表主键有没有什么 数值上有没有规律 然后 在存储过程 中 用循环 按规律 对b表进行添加数据 UPDATE TABLE_NAME
SET 名称 = (SELECT Y.名称 FROM TABLE_NAME Y WHERE PID = 0001),
代号 = (SELECT Y.代号 FROM TABLE_NAME Y WHERE PID = 0001),
步骤 = (SELECT Y.步骤 FROM TABLE_NAME Y WHERE PID = 0001),
效果图路径 = (SELECT Y.效果图路径 FROM TABLE_NAME Y WHERE PID = 0001)
WHERE PID = 0032;
COMMIT;
我特意创建了一个表,字段跟你描述的一样.经过测试才回答你的.
针对单行记录的更新操作,这个是最简单的.
其次因为需要处理的记录条数少.不会影响性能.再次,表的字段少,查询速度快.
只是我是以ORACLE数据库来作为实例的,换成其他数据库,换下语法就OK了.
create table test_table
(
PID VARCHAR2(20),
名称 VARCHAR2(20),
代号 VARCHAR2(20),
步骤 VARCHAR2(20),
效果图路径 VARCHAR2(20)
);
INSERT INTO test_table(PID,名称,代号,步骤,效果图路径) VALUES ( '0001' ,'苹果4','IP4','下单中','D:\苹果图');
INSERT INTO test_table(PID,名称,代号,步骤,效果图路径) VALUES ( '0032' ,' ',' ',' ',' ');
COMMIT;
你可以试试,看我的正确不正确.
如果是SQLSERVER数据库,这样是手动执行的方式,
需要换成自动执行,就把这个SQL嵌套进存储过程中就OK了.
上一个:向ORACLE数据库中插入数据后数据消失
下一个:oracle数据库表名和字段名可以有中文吗