草庐IT

主键自增

全部标签

mysql - 使用代理主键插入到两个 SQL 相关表中

在我的数据库中,所有主键都是代理键。有一些唯一键,但并非总是如此,因此访问特定行的最安全方法是主键。他们中的许多人使用AUTO_INCREMENT。插入两个相关表时是否必须锁定对数据库的访问?例如。createtablefoo(foo_idnumericnotnullauto_increment,sthvarchar,PRIMARYKEY(foo_id))createtablebar(bar_idnumericnotnullauto_increment,foo_idnumericnotnull,PRIMARYKEY(bar_id),FOREIGNKEY(foo_id)REFERENCE

MySQL:创建临时表时是否自动创建主键?

我有一个查询需要很长时间(大约1100万次观察)和三个连接(我无法阻止它进行检查)。其中一个连接是使用临时表。当我使用其中包含主键的表中的数据创建临时表时,新表是否会继续索引,或者我是否必须在新临时表中显式创建索引(使用主键来自父表)? 最佳答案 否-对于显式定义的临时表,不会自动定义索引。您需要在创建表时或之后使用ALTERTABLE..定义索引。您可以使用SHOWCREATETABLEmy_temptable检查它。尝试以下脚本:droptableifexistsmy_persisted_table;createtablemy_

mysql - 自增主键和复制

最近我被告知要将auto_increment主键添加到我们所有的表中,因为我们的数据库将被复制(主-主解决方案)。我们所有的表都有某种主键,但并非所有表都是自动递增的。我查看了有关复制的mysql文档,但没有发现任何迹象表明需要此(auto_increment主键)。那么,我错过了什么吗?当要复制数据库时,使用自动递增的主键是否更好? 最佳答案 自增主键绝对不是必需的,但在处理整数主键和多键时,它们是处理您即将拥有的时髦娱乐的更直接和简单的方法之一-主复制。您需要确保能够唯一标识每个母版上新插入的行。您不希望服务器A在服务器B插入第

MySQL 非主键自增

我想知道是否/如何为每个主键创建第二列自动递增:CREATETABLEtest(`id`INTEGERUNSIGNEDNOTNULL,`subId`INTEGERUNSIGNEDNOTNULLAUTO_INCREMENT,`text`VARCHAR(45)NOTNULL,PRIMARYKEY(`id`,`subId`))ENGINE=InnoDB;不幸的是,只有当我将ID指定为主键并将subId指定为索引键(但我同时需要它们并且ID可以重复)。示例数据(我需要的):1,11,21,32,12,23,1将ID设置为主索引和subId索引的问题是subId将独立于ID递增。如何实现,甚至可

mysql - MySQL 是否会因主键值非常高而变慢?

如果我的表中主键的值在200,000,000到200,000,100之间如果值为1000到1100,查询会慢很多吗? 最佳答案 没有。除非您为这些数字使用char/varchar字段,否则数字将以固定大小的原始二进制格式存储,并且数字的“大小”与搜索速度无关-1将在数据库中占用与999999999999一样多的空间。 关于mysql-MySQL是否会因主键值非常高而变慢?,我们在StackOverflow上找到一个类似的问题: https://stackove

mysqldump + auto_increment 导致主键错误

我正在使用mysqldump(a)转储一个表,然后(b)将它插入到别处。当我尝试执行(b)部分时出现问题。这是我得到的错误。键“PRIMARY”的重复条目“1”现在,坚持,坚持。我知道我没有插入重复的主键....我检查了CREATETABLE语句。id字段上的auto_incremement保留为id列的最大值:AUTO_INCREMENT=45634650。我认为问题在于,如果您尝试插入id值小于auto_increment指定值的任何行,MySQL将给出此错误....无论该id是否重复。我尝试从TABLECREATE语句中手动删除AUTO_INCREMENT。仍然是同样的错误。更新

mysql - SQL:具有相同主键的两个表

我有两个表:个人(personID、姓名、地址、电话、电子邮件)玩家(出生日期、学校)我应该使用什么代码才能将Person中的personID用作Person和Player表中的主键?我知道playerID也必须是Player中的外键。有什么想法吗? 最佳答案 目前尚不清楚您是否需要两个表格来获取此信息,除非代表的人员不是玩家。让我们假设是这种情况(其他人可以是教练、parent、裁判等)。此外,尽管教练确实出生了,但他们的出生日期对系统来说并不重要(因此无需将出生日期传回Person表)。另外,假设您正在与只上一所学校的人打交道;

php - 使用 PHP 的 mySQL 表中的增量主键

我正在尝试使用表单发布向mySQL表中添加行。每行都有一个主要的我称之为quoteID。提交新表单时,它应该将自己添加为表中的一行,并且quoteID比之前的quoteID大1。它目前看起来像这样:目前此表中有4行,quoteID分别为1、2、3和4。奇怪的是,如果我尝试:输出结果为:Resourceid#34无论表中有多少行,$previousOrderID都固定为3。我该如何更正此问题?更重要的是,当我对它进行添加时它是正确的,但为什么它首先输出“Resourceid#3”? 最佳答案 你可以通过在phpmyadmin中选择自动

mysql - 在 MySQL Server 中创建一个以一对作为主键的表

这个问题在这里已经有了答案:SyntaxerrorduetousingareservedwordasatableorcolumnnameinMySQL(1个回答)关闭8年前。我有2个表:Authors(id,name,add,DOB)其中字段分别为INTEGER、CHAR(20)、CHAR(20)、DATE。主键=id。Books(bid,title,publisher)其中字段分别为INTEGER、CHAR(20)、CHAR(20)。主键=出价。我想创建另一个包含字段aid、bid、datePublished的Write表,其中:aid=INTEGER...这实际上是来自作者的id。

php - 获取数据主键值作为关联数组的索引

执行获取查询后,我得到一个结果数组:[row_choice]=>Array([0]=>Array([id]=>277410[text_value]=>TwoWheel)[1]=>Array([id]=>277411[text_value]=>ThreeWheel)[2]=>Array([id]=>277412[text_value]=>FourWheel))我怎样才能得到这样的结果数组?:[row_choice]=>Array([277410]=>Array([id]=>277410[text_value]=>TwoWheel)[277411]=>Array([id]=>277411[