一般主键是怎么生成的呢

一般主键是怎么生成的呢,第1张

--用命令创建主键与外键.

--使用SQL语句创建主键约束可以在创建表(Create Table)或修改表(Alter Table)时进行 创建。

--例创建表时

create table tablename

(

id int (CONSTRAINT pk_id) PRIMARY KEY

)

--例修改表时

ALTER TABLE tablename --修改表

ADD

CONSTRAINT tb_PRIMARY

PRIMARY KEY CLUSTERED (列名) /*将你要设置为主键约束的列*/

--用命令创建默认值对象,并与表中字段绑定.

--使用SQL语句创建主默认值对象可以在创建表(Create Table)或修改表(Alter Table)时进行 创建。

--例创建表时

create table tablename

(

id int DEFAULT 0

)

--例修改表时

ALTER TABLE tablename --修改表

ADD

CONSTRAINT tb_DEFAULT

DEFAULT '10011' FOR 列名 /*将你要设置为默认值对象的列*/

--用命令创建CHECK约束定义某字段.

USE 销售管理系统--引入数据库

ALTER TABLE 销售表--修改表

ADD CONSTRAINT ck_sl--创建检查约束

CHECK (数量 >= 1 and 数量 <= 10000)--添加约束条件

--用命令创建规则对象,并与表中字段绑定.

--创建规则使用CREATE RULE语句创建

CREATE RULE RULE_AGE--创建规则

AS

@AGE !>40--规则条件不能大于40

CREATE RULE list_rule --创建规则

AS

@list IN ('1001', '1002', '1003')--规则条件只能输入1001、1002、1003

CREATE RULE pattern_rule --创建规则

AS

@value LIKE '_ _-%[0-9]'--规则条件在任意两个字符的后面跟一个连字符和任意多个字符,并以 0 到 9 之间的整数结尾

--创建好一个规则后,必须使用绑定才能够使用规则,一般情况下,规则可以绑定在用户自定义数据类型或是数据列中。下面可以使用SQL Server中的系统存储过程sp_bindrule将规则绑定在数据表中。

EXEC sp_bindrule 'RULE_AGE',' *** 作员信息表. *** 作员年龄'

--用命令创建用户自定义数据类型,并用该数据类型定义表中字段.

--在“student”数据库中,创建用来存储邮政编码信息的“postalcode”用户定义数据类型。

--SQL语句如下:

USE student

EXEC sp_addtype postalcode,'char(8) ','not null'

还有一种方法,利用数据库的工具在库内生成。像PL,Navicat for MySQL等,根据数据不同用不同的工具

分成多个表之后,每个表都是从 1 开始累加,这样是不对的,我们需要一个全局唯一的 id 来支持。生成全局 id 有下面这几种方式:

UUID:不适合作为主键,因为太长了,并且无序不可读,查询效率低。比较适合用于生成唯一的名字的标示比如文件的名字。

数据库自增 id : 两台数据库分别设置不同步长,生成不重复ID的策略来实现高可用。这种方式生成的 id 有序,但是需要独立部署数据库实例,成本高,还会有性能瓶颈。

利用 redis 生成 id : 性能比较好,灵活方便,不依赖于数据库。但是,引入了新的组件造成系统更加复杂,可用性降低,编码更加复杂,增加了系统成本。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10080889.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存