mysql怎么增加uni mysql怎么增加主键-成都创新互联网站建设

关于创新互联

多方位宣传企业产品与服务 突出企业形象

公司简介 公司的服务 荣誉资质 新闻动态 联系我们

mysql怎么增加uni mysql怎么增加主键

MySQL数据表的修改:添加约束

4.4.7添加约束

公司主营业务:成都网站建设、网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联建站是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联建站推出科尔沁左翼免费做网站回馈大家。

语句格式:ALTER TABLE 表名ADD  CONSTRAINT  约束名 约束类型(字段名)

上面语句格式中,“表名”指定要添加约束的是哪个表,“ADD CONSTRAINT”表示要在表中增加约束,其后的“约束名”是拟增加约束的名字,“约束类型”是拟增加约束的类型,其后括号里的“字段名”是指约束是在哪一个字段上建立起来的。

下面截图中的“ALTER TABLE”语句在t_dept表中新增加了一个约束名为unidept的约束,它是在对字段deptno进行的唯一性约束。

MySQL Key值(PRI, UNI, MUL)怎样设置?

PRI primary key 表示主键,唯一 写法: id bigint(20) unsigned primary key not null ,

uni UNIQUE 表示唯一 写法 id bigint(20) unsigned UNIQUE default NULL

mul 添加了索引 写法: alter table test add index suoyin (col_name1);

如果有同时存在,

显示顺序 PRIUNIMUL

mysql中enum类型怎么设置

根据用户定义的枚举值与分片节点映射文件,直接定位目标分片。

用户在rule.xml中配置枚举值文件路径和分片索引是字符串还是数字,DBLE在启动时会将枚举值文件加载到内存中,形成一个映射表

在DBLE的运行过程中,用户访问使用这个算法的表时,WHERE子句中的分片索引值会被提取出来,直接查映射表得到分片编号

与MyCat的类似分片算法对比

中间件

DBLE

MyCat

分片算法种类    enum 分区算法    分片枚举  

两种中间件的枚举分片算法使用上无差别。

开发注意点

【分片索引】1. 整型数字(可以为负数)或字符串((不含=和换行符)

【分片索引】2. 枚举值之间不能重复

Male=0Male=1

或者

123=1123=2

会导致分片策略加载出错

【分片索引】3. 不同枚举值可以映射到同一个分片上

Mr=0Mrs=1Miss=1Ms=1123=0

运维注意点

【扩容】1. 增加枚举值无需数据再平衡

【扩容】2. 增加一个枚举值的分片数量数时,需要对局部数据进行迁移

【缩容】1. 减少枚举值需要数据再平衡

【缩容】2. 减少一个枚举值的分片数量数时,需要对局部数据进行迁移

配置注意点

【配置项】1. 在 rule.xml 中,可配置项为 property name="defaultNode" 、property name="mapFile" 和 property name="type"

【配置项】2. 在 rule.xml 中配置 property name="defaultNode" 标签,非必须配置项,不配置该项的话,用户的分片索引值没落在 mapFile 定义的范围时,DBLE 会报错;若需要配置,必须为非负整数,用户的分片索引值没落在 mapFile 定义的范围时,DBLE 会路由至这个值的 MySQL 分片

【配置项】3. 在 rule.xml 中配置 property name="mapFile" 标签,范围映射文件的路径:若在映射文件在 DBLE_HOME/conf 或其中,则可以使用相对路径的形式配置,例如,映射文件是 DBLE_HOME/conf/map/table_map.txt 时,配置值就可以简写为 map/table_map.txt;映射文件在 DBLE_HOME/conf 目录以外时,需要使用绝对路径,但这种做法需要考虑用户权限等问题,因此不建议把映射文件放在 DBLE_HOME/conf 外。

【配置项】4. 编辑 mapFile 所配置的文件

记录格式为:枚举值=分片编号

枚举值可以是整型数字,或任意字符(除了=和换行符),分片编号必须是非负整型数字,记录之间以换行分隔,一行仅能有一条记录,枚举值不能够是“DEFAULT_NODE”这个字符串,允许以“//”和“#”在行首来注释该行

【配置项】5. 在 rule.xml 中配置 property name="type" 标签;type 必须为整型;取值为 0 时,mapFile 的枚举值必须为整型;取值为非 0 时,mapFile 的枚举值可以是任意字符(除了=和换行符)

mysql添加外键时总是报错

我观察到你的   emp  表的  username  列,  已经是   有  UNI   的  KEY 了

也就是那个  emp  表的  username  是唯一的了。

因此, 理论上

foreign key(username) references emp(username),

这个应该没有问题。

但是那个

foreign key (name) references emp (name)

由于   emp  表的  name  列,   是允许有重复行的。

因此你无法创建外键。

下面就是一个   失败的例子代码, 你可以参考一下

-- 创建测试主表.  无主键.

CREATE TABLE test_main2 (

id      INT   NOT  NULL,

value   VARCHAR(10)

);

-- 创建测试子表. 

CREATE TABLE test_sub2 (

id      INT   NOT  NULL,

main_id INT,

value   VARCHAR(10),

PRIMARY KEY(id)  

);

-- 插入测试主表数据.

INSERT INTO test_main2(id, value) VALUES (1, 'ONE');

INSERT INTO test_main2(id, value) VALUES (2, 'TWO');

-- 插入测试子表数据.

INSERT INTO test_sub2(id, main_id, value) VALUES (1, 1, 'ONEONE');

INSERT INTO test_sub2(id, main_id, value) VALUES (2, 2, 'TWOTWO');

mysql ALTER TABLE test_sub2

-    ADD CONSTRAINT main_id_cons2

-    FOREIGN KEY (main_id)

-    REFERENCES  test_main2(id);

ERROR 1005 (HY000): Can't create table 'test.#sql-608_1' (errno: 150)

默认情况下,无法创建外键

需要创建 unique 约束

mysql ALTER TABLE test_main2

-   CHANGE COLUMN id id INT UNIQUE;

Query OK, 2 rows affected (0.17 sec)

Records: 2  Duplicates: 0  Warnings: 0

unique 约束创建完毕后,外键创建成功。

mysql ALTER TABLE test_sub2

-    ADD CONSTRAINT main_id_cons2

-    FOREIGN KEY (main_id)

-    REFERENCES  test_main2(id);

Query OK, 2 rows affected (0.14 sec)

Records: 2  Duplicates: 0  Warnings: 0


网站名称:mysql怎么增加uni mysql怎么增加主键
文章起源:http://kswsj.cn/article/ddccjhp.html

其他资讯