最代码风一的gravatar头像
最代码风一 2017-11-02 17:26:17

sql如何新增一列并设置成主键?

在表中新建一列,怎样将其设置成主键?怎样才能不违反唯一约束?求大神解惑

所有回答列表(4)
hungrypan的gravatar头像
hungrypan  LV2 2017年11月3日
/*创建测试表t_table*/
create table t_table(
	name varchar(30),
	age int
);
/*添加测试数据*/
insert into t_table(name,age) values('aaa',20);
insert into t_table(name,age) values('bbb',19);
insert into t_table(name,age) values('ccc',23);

/*添加列,并设置为主键自增*/
alter table t_table
add id bigint primary key auto_increment;

/*查询结果*/
select * from t_table;

+------+-----+----+
| name | age | id |
+------+-----+----+
| aaa  |  20 |  1 |
| bbb  |  19 |  2 |
| ccc  |  23 |  3 |
+------+-----+----+
3 rows in set

 

评论(0) 最佳答案
28860823的gravatar头像
28860823  LV3 2017年11月2日

一个字段要成为主键的要求:

1、字段不能为空,也不能有空值;

2、字段中不能有重复值

违反唯一约束说明字段中存在重复值。

 

ewoft10086的gravatar头像
ewoft10086  LV2 2017年11月3日

主键自带唯一性约束

alter table 表明 add column name varchar(20)  primary key好像是这么创建的

最代码风一的gravatar头像
最代码风一  LV7 2017年11月3日

-- Create sequence 
create sequence TBL_USER_CARDCERT_SEQ
minvalue 1
maxvalue 9999999999999999999999999999
start with 1
increment by 1
cache 20;
--新增列
alter table TBL_USER_CARDCERT add  USER_CARDCERT_ID NUMBER(10);
--更新列
update TBL_USER_CARDCERT
set USER_CARDCERT_ID = TBL_USER_CARDCERT_SEQ.NEXTVAL
--添加主键
alter table TBL_USER_CARDCERT add CONSTRAINT PK_USER_CARDCERT primary key (USER_CARDCERT_ID);

Orcal 这样是实现了

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友