在oracle 数据库 中,如何进行带有主键的行复制,复制时候创建一个新主键。其他内容一致。

在oracle数据库中,如何进行带有主键的行复制,复制时候创建一个新主键。其他内容一致。比如,查询到行A:PID(主键)---名称---代号---步骤---效果图路径00... 在oracle 数据库 中,如何进行带有主键的行复制,复制时候创建一个新主键。其他内容一致。
比如,查询到行 A: PID(主键)---名称---代号---步骤---效果图路径
0001 ----苹果4---IP4---下单中---D:\苹果图
现在要求创造新的一行数据,仅仅要求主键不同,其他一样

0002 ----苹果4---IP4---下单中---D:\苹果图

请问怎么用SQL语句完成自动复制?
补充一下,主键要要求自定的不是按照计数器生成的,比如要求必须2012002应该怎么写SQL?因为这个表的主键并不是由表本身计数器生成的。
展开
 我来答
僵尸002130
2012-04-10 · 超过27用户采纳过TA的回答
知道答主
回答量:108
采纳率:0%
帮助的人:86.5万
展开全部
首先分析主键是怎么构成的 就拿上面的2012002来说 可以分成2部分 2012 即当前年份 后面接002 ,002又可以分成00+2这种形式,即使到后面10或者100 就生成 0010,00100 是这样的吧。那么我们可以将主键先设置成增长 他生成的时候 会是 1,2,3,4 以此类推。在查询的时候这样查询 select to_char(sysdate,'yyyy')||lpad(PID,3,'00') from A;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
神装法师
2012-04-09 · TA获得超过790个赞
知道小有建树答主
回答量:154
采纳率:0%
帮助的人:318万
展开全部
insert into table_name
select 'c'||PID, 名称, 代号, 步骤, 效果图路径 from table_name;

建议像我这么处理生成的记录,如果新生成的PID为0002,虽不会和0001冲突,但有可能与表内其他数据冲突。

如果觉得好请采纳
追问
补充一下,主键要要求自定的不是按照计数器生成的,比如要求必须2012002应该怎么写SQL?因为这个表的主键并不是由表本身计数器生成的。
追答
自定义的主键需要的是规则,请把你的规则说清楚我才好分析怎么写。

目前按照你的说法,从001到2012002的话,2012001+PID即可实现从001到2012002的变化。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友41cc451
2012-04-09 · 超过33用户采纳过TA的回答
知道答主
回答量:114
采纳率:0%
帮助的人:85.6万
展开全部
如果不想重复的话可以用uuid
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式