监理公司管理系统 | 工程企业管理系统 | OA系统 | ERP系统 | 造价咨询管理系统 | 工程设计管理系统 | 签约案例 | 购买价格 | 在线试用 | 手机APP | 产品资料
X 关闭
微信营销软件

当前位置:工程项目OA系统 > 领域应用 > 微信营销 > 微信营销软件

SYBASE & ORACLE自增主键

申请免费试用、咨询电话:400-8352-114

  SYBASE & ORACLE自增主键

  1、SYBASE:

  SQL语句:

  CREATE TABLE test( phoneid int IDENTITY NOT NULL PRIMARY KEY , phoneNum varchar(20) null )

  关键字IDENTITY一定要大写,而且一定要放在int和not null之间,

  用dba设置的话比较方便,直接在建表的过程中把Identity Column的属性勾上即可。

  2、ORACLE

  由于ORACLE设置主键是不会自动增加的,所以必须用 序列 和 触发器 来完成主键的递增

  1建立数据表

  createtable Test_Increase( userid number(10) primarykey,/*建立主键*/ username varchar2(20) );

  2创建自动增长序列

  CREATE SEQUENCE TestIncrease_Sequence INCREMENT BY1-- 每次加几个 START WITH1-- 从1开始计数 NOMAXVALUE-- 不设置最大值 NOCYCLE-- 一直累加,不循环 CACHE 10;

  3创建触发器

  CREATETRIGGER Test_Increase BEFORE insertON Test_Increase FOR EACH ROW begin select TestIncrease_Sequence.nextval into:New.userid from dual; end;完成!------------------------------------------------------------------------------------------------------------DB2修改表中一列为自动增长主键的方法1 )当想将表中一列修改为自动增长时,可用下面命令: Alter table <table name> alter column <column name> set generated always as identity (start with 1,increment by 1) 上面命令是在改一表中列的属性时,在网上找到的很有用。 2)当修改表中一列自动增长的开始值时,可用下面的命令: ALTER TABLE <talbe_name> ALTER COLUMN <column name> RESTART WITH 18; DB2可以使用generated always as identity 将某一个字段指定为自增长的字段, 比如: 这表示id自动是一个自增长的字段,它从1开始增加每次增加1。也可以通过generated 将字段的值通过其他字段的计算的来,比如; createtableuser(namevarchar(30), n1integer, n2 integer, idintegergeneratedalwaysas(n1+n2)) 如: createtablestrategy ( strategy_iddecimal(17) GENERATEDALWAYSASIDENTITY(STARTWITH1,INCREMENTBY1) primarykeynotnull, strategy_namevarchar(200), area_code decimal(6,0) ); GENERATEDALWAYSASIDENTITY(STARTWITH1, INCREMENTBY1) 从1开始自增,每次加1. DB2Identity字段与sequence: Identity字段与sequence的最大不同在于: identity只能在一个表中使用,多个表不可以共享identity;而sequence可以通过命名方式在同一个数据库内部的多个表中共享序列号发生器 生成数字序列的两种方法 在 DB2 中可以用两种方法自动生成一个数字序列: 定义带有 IDENTITY 属性的列。 创建 SEQUENCE 对象。 IDENTITY 列 当用 IDENTITY 属性定义表的列时,每当将一行插入表时,就会自动为该列生成一个数值。 SEQUENCE 对象 让 DB2 自动生成数字序列的第二种方法是创建 SEQUENCE 对象。可以使用 序列表达式(sequence expression)来引用序列对象。序列表达式可以出现在表达式能够出现的大多数位置。序列表达式可以指定要返回的值是新生成的值还是以前生成的值。 如果序列引用是针对 下一值(next value),就会为序列自动生成一个数值,并将该数值作为序列表达式的结果返回。例如,如果我们假设已经创建了名为 orders_seq 的序列,该序列表达式就返回为序列生成的下一个值: NEXTVALUEFORorders_seq 如果序列引用是针对 前一值(previous value),那么会将前一个 SQL 语句中为序列生成的数值作为序列表达式的结果返回。该序列表达式返回由序列生成的前一个值: PREVIOUSVALUEFORorders_seq 注:当 DB2 UDB 引入序列时,曾支持非 SQL 标准语法 NEXTVAL 代替 NEXT VALUE ,以及 PREVVAL 代替 PREVIOUS VALUE 。这些变体继续受到支持。 在标识和序列之间做出选择 虽然标识和序列都用于生成数值,但您也许要根据特殊情况选择使用一种来代替另一种。 在以下情况下,标识列很有用: 表中只有一列需要自动生成的值 每一行都需要独立的值 用自动生成器来产生表的主键 生成新值的进程与对表的插入操作紧密联系,无论插入操作是如何发生的 在以下情况下,序列对象很有用: 要将从一个序列生成的值存储到多个表中 每个表有多个列需要自动生成的值(可能通过使用同一个序列或多个序列为每一行生成多个值) 生成新值的进程与任何对表的引用无关 与序列对象不同,标识列是在表上定义的,因此需要某些限制。每个表最多只能有一个标识列。当创建一个列作为标识列时,对于该列必须使用确切的数字数据类型。因为标识属性为列生成一个值,这类似于 DEFAULT 子句所做的,所以在定义标识列时不能指定 DEFAULT 子句。标识列被隐式地定义成 NOT NULL

发布:2007-04-07 16:32    编辑:泛普软件 · xiaona    [打印此页]    [关闭]
相关文章:

泛普微信营销软件其他应用

微营销 微信推广 微信营销软件 微信二维码 微信商城 微信支付 微信开店 微信公众平台 微信公众号 微信公众平台登录 微信怎么玩 微信认证 下载微信到手机 手机微信 微信官网 微信网页版 电脑微信 微信电脑版 微信公众平台注册 微信注册 微信公众号申请