草庐IT

主键自增

全部标签

mysql - 无论列名如何都选择主键?

我只是想知道是否有任何方法可以在WHERE子句中使用主键来选择一行,而不必知道键的列的名称。我建议的PHP函数如下:functiongetData($table,$key,$asarray=false){$sql=mysql_query("select*from`".$table."`whereprimary='".$key."'");if(!$asarray)returnmysql_fetch_assoc($sql);$ret=[];while($row=mysql_fetch_assoc($sql))$ret[]=$row;return$ret;}一些注意事项:$table仅来自代

mysql - 为什么要为自增 ID 指定长度

我已经使用SQL工作大约2年了,它一直在我的脑海中。BestpracticessayassignthelengthofthecolumntowhatyouareexpectingSQL需要一个特定的行作为主键,但它也是A_i字段的最佳实践......但是分配它的长度是多少?如果留空,则默认为11,表示999,999,999这看起来不错,但最佳实践还声明永远不要从数据库中实际清除任何内容;只需附加一个0或1来表示已删除,这是为了存档/恢复目的。也可用于审核用户想要清除的内容。举个例子:我有一个存在多年的网站,遵循不从数据库中删除任何内容的最佳实践;我的数据库/网站流量非常大,每天有大量独

mysql - 更改 mysql 表中的主键列时出错

我对SQL和MySQL还很陌生。我正在尝试修改表中的主键列,使其自动递增。这个主键也是另一个表中的外键。由于与其他表中的外键相关的错误,我无法修改此列。这是错误:mysql>descfavourite_food;+-----------+----------------------+------+-----+---------+-------+|Field|Type|Null|Key|Default|Extra|+-----------+----------------------+------+-----+---------+-------+|person_id|smallint(5

mysql - 重新排列mysql中的主键

如何在MySQL中删除表中的某些行后重新排列主键列值?敌人的例子;一个包含4行数据的表,主键值为1、2、3、4。当删除第2行和第3行时,第4行的键值变为2。请帮我找到解决办法。 最佳答案 为什么要这样做?您不需要重新排列您的key,因为它只是数字,用于记录的标识符。它没有实际意义-所以让DBMS处理它。这是一个非常常见的错误-试图扮演DBMS的角色。但是,我会针对常见情况回答您的问题。在MySQL中,您可以重新排列列:updatetcrossjoin(select@cur:=0)asinitsett.col=@cur:=@cur+1

java - 将主键作为外键映射到另一个表

我有一个关于外键关系及其JPA副本的问题。在下表中。means_of_transport是一个连续编号的表格。其他表的条目较少,它们的主键作为外键映射到means_of_transport的主键。遗憾的是,我无法更改数据模型。表means_of_transportCREATETABLEmeans_of_transport(idINTPRIMARYKEYNOTNULL,max_capacityINT);表ocean_shipCREATETABLEocean_ship(means_of_transport_idINTPRIMARYKEYNOTNULL,nameVARCHAR(45)NOTN

mysql - Spring 数据 JPA; save() 自增主键错误

我有一个以UserId作为主键的USER表,它是int并且在MySQL中自动递增。@Id@GeneratedValue@Column(name="USER_ID")privateIntegeruserId;当我运行userRepository.save(user);我收到一条错误消息:org.springframework.beans.InvalidPropertyException:bean类[com.mysite.model.User]的属性“userId”无效:属性“userId”的Getter抛出异常;嵌套异常是java.lang.reflect.InvocationTarge

mysql - 在 MySQL 中使用区分重音的主键

期望的结果:在MySQL中有一个区分重音的主键。我有一个独特的词表,所以我使用这个词本身作为主键(顺便说一下,如果有人可以给我一个建议,我不知道它是否是一个好的设计/实践)。我需要该字段区分重音(为什么不区分大小写),因为它必须区分,例如,'demandé'和'demande',两个法语动词“需求者”的不同变形。我在数据库中存储带重音的单词没有任何问题。我只是不能插入两个在未重音时相同的重音字符串。错误:尝试使用以下查询创建'demandé'行时:INSERTINTO`corpus`.`token`(`name_token`)VALUES('demandé');我遇到了这个错误:ERR

MySQL 主键查询扫描 5000 倍太多的行

我正在尝试使用基于PRIMARYKEY的WHERE语句运行一个简单的SELECT查询。我在具有32个内核和30GBRAM的GCE实例上运行MySQL5.7.9。500个分区中有约300M条记录。我99.9999%的查询都来自最近2天,并且该数据完全适合内存,验证我看到从磁盘读取了~0字节。我的CPU一直固定在100%,同时运行10-20个类似的查询。我正在跟踪一些Google搜索数据,因此每个Requested、IsPriority和KeywordID组合有100个rank。尽管我的主索引设计为不需要扫描,但当我查看EXPLAIN时,它显示正在扫描552k行以返回100行。平均而言,从

python - pymysql(python3.5)INSERT后如何返回最后一个主键?

CREATETABLE`users`(`id`int(11)NOTNULLAUTO_INCREMENT,`email`varchar(255)COLLATEutf8_binNOTNULL,`password`varchar(255)COLLATEutf8_binNOTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=utf8COLLATE=utf8_binAUTO_INCREMENT=1;例如,如何通过cursor.execute("insertinto...",...)获取我插入表中的最后一条记录的主键id?

java - 如何获取JDBC中所有表的主键?

我有一个包含至少500个表的数据库。获取每个表的所有主键和外键的具体代码是什么?//PrimaryKeyDatabaseMetaDatameta=conn.getMetaData();ResultSetrs1=meta.getTables(null,null,"TableName",newString[]{"TABLE"});rs1=meta.getPrimaryKeys(null,null,"TableName");while(rs1.next())System.out.println("PrimaryKey:"+rs1.getString(4));//ForeignKeyrs1=m