只能有一个自增的列,而且一般来说该列都是主键,你要不就是没将auto_increment的字段设为主键,要不就是设了不止一个auto_increment字段
每个表里只能有这样的一个字段,不能有多个
只要你后台没有再做其他处理,直接查出来的肯定是一样的,而且也没必要非要与数据库的顺序一样啊,有什么需求会这样要求的。。
如果是乱的话可以在sql中加一个order by按照一个字段排序好,然后extjs中store中也用这个字段排序,排序规则一样的那数据肯定是一样的了。
如果Insert数据不是大批量的话,强烈建议创建索引,只样检索效率最高,代码也好写。
否则如果时间字段不会更新的话,倒是可以创建一个函数传入时间字段和上区间/下区间标记返回上区间/下区间ID,这个函数也不复杂就是根据现在的数据现状把时间分几个区间,比如: if p_date <= '2014-11-1' and p_date >= '2014-11-1' then return 上区间/下区间ID (if else 分支越细 主键ID的索引利用率越高), 这样在Where中用这个函数就可以利用主键ID的索引了,不用时间索引只能这样了。
在AutoPDMS软件中,如何查找数据库对应的编号?
原因分析:因AutoPDMS100 425之前的版本(包含AutoPDMS90版本,AutoPDMS80版本),后台数据库UEC-UECOOO下的mdb文件,在管理模块中一一对应一个唯一编号。编号的理解,对数据库与数据库组的关系,管理模块及协同设计都很有帮助。后续版本将会提供新的查找方法。
/SHJCATS/SHPUMP在UEC-UECOOO中对应的是UEC3029_0001mdb文件,/TEMCATS/CIVIL-TEMPLATE在UEC-UECOOO中对应的是UEC001mdb文件。以上述两个数据库文件为例。
1 打开UEC后台数据库,UEC-UECOOO-Adminmdb,注意:打开mdb文件,本机上必须有Access软件。
2-1png (10524 KB, 下载次数: 3)
下载附件 保存到相册
2016-5-9 14:42 上传
2 打开DB工作表,以NAME:/SHJCATS/SHPUMP, Numbdb:3029, Fino:0为例。
当Fino=0时,本数据库对应的数据库名字为:UEC3029_0001mdb。即数据库的名字中引用Numbdb。
以name:/TEMCATS/CIVIL-TEMPLATE, Numbdb: 6809,Fino:1为例
当Fino=1时,或为其他自然数,本数据库对应的数据库名字为:UEC001_0001mdb。即数据库的名字中引用Fino。
MySQL的中AUTO_INCREMENT类型的属性用于为一个表中记录自动生成ID功能
可在一定程度上代替Oracle,PostgreSQL等数据库中的sequence。
在数据库应用,我们经常要用到唯一编号,以标识记录。在MySQL中可通过数据列的AUTO_INCREMENT属性来自动生成。
可在建表时可用“AUTO_INCREMENT=n”选项来指定一个自增的初始值。
可用alter table table_name AUTO_INCREMENT=n命令来重设自增的起始值。
当插入记录时,如果为AUTO_INCREMENT数据列明确指定了一个数值,则会出现两种情况,
情况一,如果插入的值与已有的编号重复,则会出现出错信息,因为AUTO_INCREMENT数据列的值必须是唯一的;
情况二,如果插入的值大于已编号的值,则会把该插入到数据列中,并使在下一个编号将从这个新值开始递增。也就是说,可以跳过一些编号。
如果自增序列的最大值被删除了,则在插入新记录时,该值被重用。
如果用UPDATE命令更新自增列,如果列值与已有的值重复,则会出错。如果大于已有值,则下一个编号从该值开始递增。
扩展资料
在使用AUTO_INCREMENT时,应注意以下几点:
1、AUTO_INCREMENT是数据列的一种属性,只适用于整数类型数据列。
2、设置AUTO_INCREMENT属性的数据列应该是一个正数序列,所以应该把该数据列声明为UNSIGNED,这样序列的编号个可增加一倍。
3、AUTO_INCREMENT数据列必须有唯一索引,以避免序号重复(即是主键或者主键的一部分)。
4、AUTO_INCREMENT数据列必须具备NOT NULL属性。
5、AUTO_INCREMENT数据列序号的最大值受该列的数据类型约束,如TINYINT数据列的最大编号是127,如加上UNSIGNED,则最大为255。
一旦达到上限,AUTO_INCREMENT就会失效。
6、当进行全表删除时,MySQL AUTO_INCREMENT会从1重新开始编号。
这是因为进行全表 *** 作时,MySQL(和PHP搭配之最佳组合)实际是做了这样的优化 *** 作:先把数据表里的所有数据和索引删除,然后重建数据表。
7、如果想删除所有的数据行又想保留序列编号信息,可这样用一个带where的delete命令以抑制MySQL(和PHP搭配之最佳组合)的优化:delete from table_name where 1。
也可以用last_insert_id()获取刚刚自增过的值。
参考资料:
打开dbvisualizer,点击新建连接按钮(点击其中任意一个即可)。
需要填写7项信息
(1)设置格式,默认选择Server Info即可
(2)Name:数据库连接名称(自己随便起)
(3)DataBase Type:数据库类型(MySql,DB2,Oracle等)
(4)Driver:驱动类型
(5)Userid:数据库用户名
(6)Password:密码
(7)Auto Commit:是否自动提交,自动commit
驱动(Driver)选择DB2之后,自动出现三个新的内容:
(1)Database Server:数据库的地址,IP
(2)Database Port:数据库端口
(3)Database:数据名称
最终填写的信息如下,然后点击connect按钮进行连接。
如果连接成功,则下方出现如下信息,代表您的DB2连接已经新建完毕。
如果出现如下信息,则代表连接错误。需要检查用户名,密码,服务器IP,端口,数据库名等信息填写的是否正确。
可以点击Ping Server按钮,查看与服务器之间的网络是否畅通。
8
如果服务器网路畅通,会提示如下信息
以上就是关于在现有MYSQL数据库中设置主键和auto_increment时一直出错。全部的内容,包括:在现有MYSQL数据库中设置主键和auto_increment时一直出错。、数据库表格的auto iner、MySQL数据库里,目前以auto_increment的ID为主键,但是需要频繁以时间字段进行检索,如何 *** 作效率最高等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)