使用MySQL 5.1.49,我正在尝试实现一个标记系统我遇到的问题是带有两列的表:id(autoincrement),tag(unique varchar) (InnoDB)
使用查询时,即使忽略插入INSERT IGNORE INTO tablename SET tag="whatever",自动增量id值也会增加.
通常这不会是一个问题,但我希望很多可能的尝试为这个特定的表插入重复项,这意味着我id的新行的字段的下一个值将跳得太多.
例如,我最终会得到一张表3行但不好id的表
1 | test
8 | testtext
678 | testtextt
Run Code Online (Sandbox Code Playgroud)
此外,如果我不这样做INSERT IGNORE并且只是定期INSERT INTO处理错误,则自动增量字段仍会增加,因此下一个真正的插入仍然是错误的自动增量.
如果有INSERT重复的行尝试,有没有办法停止自动增量?
正如我对MySQL 4.1的理解,这个值不会增加,但我想做的最后一件事是要么SELECT提前做很多语句来检查标签是否存在,或者更糟糕的是,降级我的MySQL版本.
SQL Server中自动增量主键的上限是多少?当SQL Server自动增量主键达到其上限时会发生什么?
如果可能的话,我需要一个t-sql查询,它从任意表返回值,也返回一个增量整数列,第一行的值为1,第二行的值为2,依此类推.
这个列实际上并不存在于任何表中,并且必须是严格增量的,因为ORDER BY子句可以对表的行进行排序,并且我希望增量行始终处于完美形状...
提前致谢.
--EDIT抱歉,忘记提及,必须在SQL Server 2000上运行
我知道这不起作用,以各种形式尝试并且一直都失败了.实现以下结果的最简单方法是什么?
ALTER TABLE XYZ AUTO_INCREMENT = (select max(ID) from ABC);
Run Code Online (Sandbox Code Playgroud)
这非常适合自动化项目.谢谢!
SELECT @max := (max(ID)+1) from ABC; -> This works!
select ID from ABC where ID = (@max-1); -> This works!
ALTER TABLE XYZ AUTO_INCREMENT = (@max+1); -> This fails :( Why?
Run Code Online (Sandbox Code Playgroud) 我认为这很简单,但我似乎无法在我的db2数据库中使用AUTO_INCREMENT.我做了一些搜索,人们似乎正在使用"默认生成",但这对我不起作用.
如果它有帮助,这里是我想要创建的表,其中sid是自动递增的.
create table student(
sid integer NOT NULL <auto increment?>
sname varchar(30),
PRIMARY KEY (sid)
);
Run Code Online (Sandbox Code Playgroud)
任何指针都表示赞赏.
Sequelize的文件并没有详细说明autoIncrement.它只包括以下示例:
// autoIncrement can be used to create auto_incrementing integer columns
incrementMe: { type: Sequelize.INTEGER, autoIncrement: true }
Run Code Online (Sandbox Code Playgroud)
基于此示例,我有以下代码:
db.define('Entries', {
id: {
type: Seq.INTEGER,
autoIncrement: true,
primaryKey: true
},
title: {
type: Seq.STRING,
allowNull: false
},
entry: {
type: Seq.TEXT,
allowNull: false
}
}
Run Code Online (Sandbox Code Playgroud)
现在,当我想创建一个条目时,我想做这样的事情:
models.Entry.create({title:'first entry', entry:'yada yada yada'})
Run Code Online (Sandbox Code Playgroud)
但是,当我执行该代码时,我得到一个数据库错误:
列"id"中的空值违反非空约束
我会假设Sequelize会将整数放入我的身份或定义数据库表来自行完成.显然不是?我在这里缺少什么来确保id自动递增和填充?
非常感谢.
我创建了一个自动增量的主键.
ID=1, ID=2ID=3如何将自动增量重置或重启为1?
我有一个ID字段,它是我的主键,只是一个int字段.
我有不到300行,但现在每次有人注册ID auto auto inc输入真的很高,如11800089,11800090等....有没有办法让它回来下来所以它可以按照订单(310,311,312) ).
谢谢!
如何避免获取此MySQL错误列topic_id的列说明符不正确?
MySQL错误......
#1063 - Incorrect column specifier for column 'topic_id'
Run Code Online (Sandbox Code Playgroud)
SQL架构......
CREATE TABLE discussion_topics (
topic_id char(36) NOT NULL AUTO_INCREMENT,
project_id char(36) NOT NULL,
topic_subject VARCHAR(255) NOT NULL,
topic_content TEXT default NULL,
date_created DATETIME NOT NULL,
date_last_post DATETIME NOT NULL,
created_by_user_id char(36) NOT NULL,
last_post_user_id char(36) NOT NULL,
posts_count char(36) default NULL,
PRIMARY KEY (topic_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
Run Code Online (Sandbox Code Playgroud) 我来自MySQL世界,请帮忙.
是否可以在JavaDB中从NetBeans IDE创建自动增量密钥?
您是否使用了一些更高级的数据库客户端?
谢谢.
auto-increment ×10
mysql ×4
sql ×4
sql-server ×2
db2 ×1
ddl ×1
duplicates ×1
innodb ×1
insert ×1
javadb ×1
netbeans ×1
node.js ×1
reset ×1
row-number ×1
sequelize.js ×1