在mysql中怎么同时运用主键和外键约束

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在mysql中怎么同时运用主键和外键约束相关的知识,希望对你有一定的参考价值。

mysql中怎么同时运用主键和外键约束

一,添加主键~
ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY(列名);
添加外键~
ALTER TABLE table_name ADD CONSTRAION pk_name FOREIGN KEY(列名) REFERENCES table_name(列名);
基础语法~其他条件自行添加二,alter table table_name add constraint fk_column_id foreign key(column) references 主键表 (column_id);
参考技术A 如果是一个表里面不用的字段,1个设置主键一个设置外键是没问题的。
如果同一个字段又是主键又是外键,那就很奇怪了

Informix 如何更加有效的创建主键和外键

参考技术A 许多人喜欢在
CREATE
TABLE
语句中使用约束键字来创建主键、外键、惟一性和其他约束。他们认为这是一种创建约束的简单且方便的方法。下面是一个例子:
CREATE
TABLE
sub_accounts
(
sub_acc
INTEGER
PRIMARY
KEY,
ref_num
INTEGER
NOT
NULL,
ref_type
INTEGER
NOT
NULL,
sub_descr
CHAR(20),
FOREIGN
KEY
(ref_num,
ref_type)
REFERENCES
accounts
(acc_num,
acc_type));
遗憾的是,对于数据库的性能和管理,这样做并不好。当
Informix
读取以上
CREATE
TABLE
语句时,它将自动创建两个索引,一个用于
sub_acc
上的主键,一个用于
ref_num

ref_type
上的外键。然后,它将自动为每一个索引指派一个系统编号,并将该编号用作索引名,对于开发人员和设计人员而言,这没有任何意义。更糟的是,这些索引是在数据
dbspace
内部创建的,因此会对数据库总体性能产生负面影响,所以
Informix
文档并不建议这样做。此外,在删除该表的主键或外键约束时,将自动删除这些索引;因此,如果需要在查询中使用这些索引,则需要重新创建它们。如果表中有数百万行,那么这可能是一个十分耗时的过程。
因此,在表中创建或添加约束的正确过程如下:
创建不含约束键字的表。
在将使用约束的列上创建索引。
更改表来添加约束。
下面是一个很好的例子:
CREATE
TABLE
item(
Item_num
smallint,
Order_num
integer
,
Stock_num
smallint,
Manu_code
char(3)
,
Quantity
smallint,
Total_price
money(8))IN
data1;CREATE
UNIQUE
INDEX
item_idx1
ON
item
(item_num)
IN
idx1;
本例中,您可以在不同的数据库空间(dbspace)中放置索引和数据,避免与索引一起删除主键约束。

以上是关于在mysql中怎么同时运用主键和外键约束的主要内容,如果未能解决你的问题,请参考以下文章

3.啥是键、候选键、主键和外键?

sql server 主键与外键约束无法创建

MySQL添加主键和外键

SQL中怎么修改主键里的属性这个主键和另一个表有外键约束

主键和外键的作用

oracle中外键的作用