powerdesigner自增中怎么给一主键设为自增型auto

在用sqlite设计表时,每个表都有一个自己的整形id值作为主键,其实可以不指定这么一个id值,sqlite内部本来就会为每个表加上一个 rowid,这个rowid可以当成一个隐含的字段使用,但是由sqlite引擎来维护的,在3.0以前rowid是32位的整数,3.0以后是 64位的整数,为什么不直接使用这个内部的rowid作为每个表的id主键呢。
相关的文档在这里:?http://www.sqlite.org/autoinc.html?http://www.sqlite.org/faq.html
用指定INTEGER PRIMARY KEY AUTOINCREMENT 和不指定自增长字段用rowid有什么区别:
使用自增长字段为主键有不少问题,比如维护或是在大型分布应用中主键冲突的解决等。在一些大型分布应用中主键一般选用guid,这可以有效的避免主键冲突,减少对主键维护的工程。当然,对于中小型的应用,自增长字段的好处更多一些,简单、快速。
Sqlite中,一个自增长字段定义为INTEGER PRIMARY KEY AUTOINCREMENT,那么在插入一个新数据时,只需要将这个字段的值指定为NULL,即可由引擎自动设定其值,引擎会设定为最大的rowid+1。当然,也可以设置为非NULL的数字来自己指定这个值,但这样就必须自己小心,不要引起冲突。当这个rowid的值大于所能表达的最大值 4775807 (3.0及以后版本的rowid最大值)后,rowid的新值会这个最大数之前随机找一个没被使用了的值。所以在rowid达到最大值前,rowid的值是严格单调增加的。INTEGER PRIMARY KEY AUTOINCREMENT 自增长字段的算法与rowid稍微有些不同。&第一,在达到最大值后,rowid会找已被删除的字段对应的rowid作为新值,而自增长字段则会丢出一个SQLITE_FULL的错误。&第二,自增长字段在增加新值时,是找一个从没被使用过的rowid作为新值,而rowid则是找最大已存在的rowid+1。这里对应用的影响会比较大,尤其是一些对id值有依赖的元记录,只适合使用自增长字段而不能用rowid。&&比如,我们设计一个元记录表:create table test (&&& [tkid]&&&&&&&&&&& integer PRIMARY KEY autoincrement,&&&&&&&&&&&&&&& -- 设置主键&&& [tktype]&&&&&&&&& int default 0,&&& [tableid]&&&&&&&& varchar (50),&&& [createdate]&&&&& datetime default (datetime('now', 'localtime'))&&& -- 时间);
&第三,使用自增长字段,引擎会自动产生一个sqlite_sequence表,用于记录每个表的自增长字段的已使用的最大值,用户可以看到,并可以用使用 Update、Delete和Insert操作,但不建议这么使用,这会让引擎混乱。如果使用rowid,也会有这么一个内部表,用户可以维护rowid 值,但看不到。这么看来,如果直接使用rowid来代替自增加字段,根据两者的细微的差别,需要注意是否与自己的应用冲突,如果没有冲突,那么用rowid会更快一点。
SQLite中创建自增字段:
简单的回答:一个声明为 INTEGER PRIMARY KEY 的字段将自动增加。
从 SQLite 的 2.3.4 版本开始,如果你将一个表中的一个字段声明为 INTEGER PRIMARY KEY,那么无论你何时向该表的该字段插入一个 NULL 值,这个 NULL 值将自动被更换为比表中该字段所有行的最大值大 1 的整数;如果表为空,那么将被更换为 1。
一个新的API函数 sqlite3_last_insert_rowid() 返回最近的插入操作的整形键.
注意这个整型键始终比之前插入表中的最后一个键大1。新键相对于表中的已有键来说是唯一的,但它可能与之前从表中删除的键值重叠。要始终得到在整个表中唯一的键,在INTEGER PRIMARY KEY的声明之前加关键词AUTOINCREMENT.这样被选的键将总是比表中已存在的最大键大1。若可能的最大键已存在于表中,INSERT操作将失败并返回一个SQLITE_FULL错误码.
阅读(...) 评论()第一步,首先要建立与数据库的连接,方法较多,这里举个例子:
http://www./softjc/86666.html
第二个,打开PD15,新建一个PDM文档,然后新建一个表,如图所示:
第3步:打开T_ID列的属性设置,设置自动生成
如何设置步长呢:如下:点击自动递增列,如图所示,有一个Microsoft的列:
第4步,因为之前设置了数据库连接,这个时候点击【Database】-【Generate Database】则可以生成此表到数据库中,如图所示,这时SQL Server2005查看该表创建语句的图:
至此,SQL Server2005下创建自增1完成,呵呵。所有回答(2)
选中&主键列&-右键&property&-右下角选中"identity",然后,切换到&Microsoft&-Identity seed and Increament中,输入"1,1"即可。
园豆:25120
园豆:3616
先设置identity 再设置主键 没发现问题
园豆:3115
&&&您需要以后才能回答,未注册用户请先。PowerDesigner&设置主键&自增&方法:选中主键&字 段,点击进入属性设置框,勾选"Identity",这里注意不同的SQL会有不同的方法,比如MySQL为:ATUO_INCREMENT,而SQL Server为:Identity,请选择你需要的数据库平台。更换平台方法:Tool--&Generate Physical Data Mode--&&General(默认就会打开这里)--&DBMS里选择你的数据库平台即可。。。
powerdesigner 15&中怎么给一主键设为自增型auto_increment.针对的是SQLServer,对于Oracle来说,现在只能是采用sequence&来处理自增。解决方法如下:在你所要设为自增型的键上(比如你的id)双击(或者右键选择Properties),弹出一个ColumnProperties&对话框,那么我们生成的数据库表就是自增型的.并且在PD15里面自动生成的SQL代码中(或者在Preview里面查看),我们看到有标识 identify .powerdesigner 11&中怎么给一主键设为自增型auto_increment.解决方法如下:在你所要设为自增型的键上(比如你的id)双击&,弹出一个Column Properties&对话框,右下角有一个Identify的选择框,选中它OK,就可以了。再去查看Preview,就能看到用大写标识出来的AUTO_INCREMENT。另外一个更快捷的方法:&Columns&的UI上有一个漏斗型&的图标&Customize columns and filters&点击以后选择你要的列,里面有:default&和identity&选中后,以后表格能只需要填写或者打勾就行了
=============
&双击字段,把identity前面的钩打上即可&&&&&&&identity就在Primary & key的右边
===in action===
在概念模型下找不到啊??
在物理模型当中找到了~~~identity!!
PowerDesigner这是一款进行设计的强大的软件。使用它可以分别从概念数据模型(Conceptual Data Model)和
物理数据模型(Physical Data Model)两个层次对数据库进行设计。
在这里,概念数据模型描述的是独立于数据库管理系统(DBMS)的实体定义和实体关系定义;
物理数据模型是在概念数据模型 的基础上针对目标数据库管理系统的具体化。
Views(...) Comments()8771人阅读
powerdesigner 版本12.5
创建表就不说了。下面开始介绍设置自动增长列。
1 在表视图的列上创建。
双击表视图,打开table properties ———&columens ,
双击要设置的列(显示列的序号的那个按钮,单击后,会显示横向的黑色箭头)。
打开column properties 对话框。
在 ‘general’ 项中 的最下面,找到 sequence下拉框 ,后面有三个按钮就 ‘create’,‘select’,‘properties’。
新建的话就点击‘create' 打开 sequence properties 对话框,general 中的name, code 随意修改
切换到 physical options 项,输入下面几项内容
start with 1
increment by 1
minvalue 1
maxvalue 根据自己需要决定是否要设定。没有的话,选择 no max value
no cache 勾选
输入完后,点击应用。创建完毕。在 preview 中 可以看到相应的创建代码
同时,在table properties———&preview 的创建代码中,自动加入了 触发器trigger 的创建代码。
创建完成。
到table properties———&preview 中拷贝table 的创建代码,复制到plsql中执行。
不知道是我的powerdesigner 设置问题,还是怎么回事,table 的创建代码中没有自动加入 sequence 的创建部分。
所以,还要到sequence properties ———&preview 中,把sequence的创建代码拷贝到 表创建的代码中
放到 cteate table .... 和 create trigger ...中间
create table G_EC_LotteryCategory& (
&& lcId&&&&&&&&&&&&&& NUMBER(3)&&&&&&&&&&&&&&&&&&&&&& not null,
&& lcName&&&&&&&&&&&& NVARCHAR2(30),
&& lcAbbr&&&&&&&&&&&& NVARCHAR2(20),
&& constraint PK_G_EC_LOTTERYCATEGORY primary key (lcId)
create sequence Sequence_LotCateID
increment by 1
start with 1
&nomaxvalue
&minvalue 1
create trigger tib_g_ec_lotterycategory before insert
on G_EC_LotteryCategory for each row
&&& integrity_error&
&&& errno&&&&&&&&&&&
&&& errmsg&&&&&&&&&& char(200);
&&& dummy&&&&&&&&&&&
&&& found&&&&&&&&&&&
&&& --& Column lcId uses sequence Sequence_LotCateID
&&& select Sequence_LotCateID.NEXTVAL INTO :new.lcI
--& Errors handling
&&& when integrity_error then
&&&&&& raise_application_error(errno, errmsg);
在plsql 中执行上端代码。创建表;
添加记录测试;
insert into G_EC_LotteryCategory(lcName,lcAbbr) values('1','1');
insert into G_EC_LotteryCategory(lcName,lcAbbr) values('2','2');
查询后,看到的的id列是自动增长的。
2 先创建,然后在列的sequence 项中选择。
&在 powerdesigner 左边的树中,你的model 项目的子菜单中有 sequence ,右键点击——& new
&打开 sequence properties 对话框,添加内容上面的方法类似。
&完场后,还是到表视图中,双击列名,打开column properties 对话框。
&general——& sequence 的下拉框中就出现了刚才创建的 sequence ,选中,保存即可。
&以上方式适用于oracle数据库。
如果是创建的是mysql数据库模型,打开table properties,选择columens双击,在 ‘general’ 项中 , 有个&identity 的复选框,勾选即可。
版权声明:本文为博主原创文章,未经博主允许不得转载。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:319764次
积分:4034
积分:4034
排名:第3731名
原创:79篇
转载:50篇
评论:48条
(2)(4)(1)(1)(2)(2)(2)(1)(4)(3)(2)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(1)(4)(1)(1)(3)(2)(1)(3)(2)(1)(4)(6)(3)(3)(1)(3)(2)(6)(9)(3)(7)(3)(1)(2)(1)(1)(3)(7)(3)(4)}

我要回帖

更多关于 mybatis新增返回主键 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信