初始化主键值,请大家帮忙想想办法

[复制链接]
查看11 | 回复5 | 2005-10-30 17:05:33 | 显示全部楼层 |阅读模式
我需要在一张表中,增加一个的主键,需要初始化该字段的值,该字段值的规则是这样的:A/P+六位流水号,不知道该怎样初始化?请各位帮帮忙!
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
哈,不知所云。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
就是我要将原来的表加一个字段A,这个字段A将作为这张表的primary key。
这张表原来有数据。
字段A的所有的初始值是四位字母+流水号(六位)。
比如:
字段A字段B 字段C。。。。。
AA01000001张三21岁
AA01000002李四24岁
AA01000003王武28岁
。。。。。。。
AA01000999赵六19岁
我是不知道该怎样初始化这样的字段A的值。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
给insert写一个before trigger指定 primarykey value= aa|| sequence.nextval不过
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
1.增加所需的列.
2.创建一个过程
使用游标取出每行的rowid,这时你愿意怎么办都行!
使用行号就可以得到所需的值了。
update table set column='aa'||hanghao where rowid=rowid;
...循环
3.创建一个主键
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
SQL> CREATE TABLE TEST
2(B VARCHAR2(20),
3C VARCHAR2(20)
4)
5/
表已创建。
SQL> BEGIN
2 FOR i IN 1..100 LOOP
3INSERT INTO TEST VALUES (i||TO_CHAR(SYSDATE,'YYYYMMDD'),i||TO_CHAR(SYSDATE,'HH24:MI:SS'));
4 END LOOP;
5END;
6/
PL/SQL 过程已成功完成。
SQL> ED
已写入文件 afiedt.buf
1CREATE TABLE TEST_2
2(A VARCHAR2(20),
3 B VARCHAR2(20),
4 C VARCHAR2(20),
5 CONSTRAINTS PK_TEST_2 primary key (A)
6* )
SQL> /
表已创建。
SQL> INSERT INTO TEST_2
2SELECT 'ABCD'||LPAD(ROWNUM,6,'0') ,B,C FROM TEST;
已创建100行。
SQL> COMMIT;
提交完成。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行