【给MySQL表添加主键】教程文章相关的互联网学习教程文章

mysql – 将数据插入表中,其主键由2列组合而成【代码】

我将这些列组合为主键.room_no, type当我插入新数据时,例如0001 01. 然后我插入0001 02. 它无法完成.它说复制主键.尽管我将2列定义为主键,但为什么它会重复.解决方法:这与compsite primay key工作相同. 你可以阅读这篇文章: – http://www.techrepublic.com/article/the-great-primary-key-debate/1045050

mysql – 强制复合主键的顺序【代码】

说我有下表item_a_id, item_b_id, value其中item_a_id和item_b_id是复合主键.在我的例子中,a,b和b,a是等价的.因此,我想确保item_a_id< item_b_id.显然应用程序逻辑会强制执行此操作,但有没有办法确保数据库也这样做?解决方法:在合理的当前版本的MySql中,您可以使用触发器来生成所需行为的emulate a check constraint.

mysql – 自动删除主键序列中的间隙

我正在创建一个网页.该网页根据用户操作将数据存储到MySQL数据库中.数据库有很多行.该行的主键是列rowID,它只按顺序对行进行编号(例如,1,2,3,4 ……).用户可以选择删除行.问题是当用户删除最后一行以外的行时. rowID中有一个跳过.例如,如果有5行,1,2,3,4,5,则用户删除第三行.现在rowID列中的数据是1,2,4,5.我想知道MySQL或PHP中是否已经有一个内置函数来有效地计算这一点. 我知道摆脱这种情况的唯一方法是遍历行并基本刷新rowID.但...

mysql – 如何增加“主键”自动增量数?【代码】

我有一个主键/自动增量列. 随着更多记录的创建,当然数字会增加. 现在,如果插入了一条记录,它将具有一个“10”的primary_key. 如何将该数字增加到“200”? 换句话说,我希望主键从现在开始有200,201,202 ……而不是11,12,13.解决方法:非常简单的查询:ALTER TABLE table_name AUTO_INCREMENT=200;MySql文档在ALTER TABLE syntax页面中提到了这一点.

mysql – 如何为同一数据库中的所有表设置唯一主键【代码】

如何为数据库的所有表设置唯一的主键?例如,我不想重复不同表的任何主键.table A: ---------- id | name ---------- 1 | aaa 3 | bbb 5 | ccctable B: ------------- id | surname ------------- 7 | ddd 2 | eee 9 | ffftable C: ------------- id | nickname ------------- 4 | ggg 6 | hhh 8 | iii所有id都是主键和auto_increment.所有数据都是动态输入的.我在PHPMYADMIN中使用MYSQL.解决方法:您可以向模式中添加一个名...

php – 如何获取MySQL中特定表的主键“列名”【代码】

我们的系统会为每个更新或插入新内容的表创建一个日志,它会保存表名,更新行的ID值或插入的最后一个ID以及事件的时间戳. 这很有用,因为我们可以检查更新的最新表是什么,并在发生更改时立即刷新显示给用户的信息,但我们没有在日志中保存ID的列名. 问题是我们在php中逐案编程.if($tableName == 'Clients'){ $idname = 'CID'; }有没有办法只问MySQL:给我一个特定的表的主键列名称,如:SHOW COLUMN_NAME FROM CLEINTS WHERE KEY_NAME =...

mysql主键int和UUID(varchar)

自增ID相对UUID来说,自增ID主键性能高于UUID,UUID维护成本高,单表的规模一般要保持在千万级别,但有符号int最大可以支持到约22亿,对于目前来说已经足够了,不会达到22亿上限。如果你觉得要加大预留量,可以把主键改为改为无符号int,上限为42亿,这个预留量已经是非常的充足了。

MySQL使用主键删除重复行【代码】

我有一个包含以下列的表:ID(primary key), USER, ACTION TIME LOCATION我试图使用列删除重复的条目:USER,ACTION,TIME,LOCATION在一起. 我写了以下查询:DELETE FROM test.testlogins WHERE id IN (SELECT * FROM (SELECT id FROM test.testlogins GROUP BY USER, ACTION, TIME, LOCATION HAVING (COUNT(*) > 1)) AS A);但是,当我执行它时,每次运行只删除1行.我的测试数据大约有40行是重复的,每行都分配了一个单独的id.解决方法...

mysql – 合并和更新主键【代码】

我看了,但没有找到解决方案似乎是一个简单的问题. 我有很多具有相同结构的表,并希望合并它们.唯一的问题是它们都有一个id字段作为主键.主键中会有很多重复项. id到底是什么并不重要.如何合并所有表,以便我不会丢失任何数据?解决方法:在新表中创建一个AUTO_INCREMENT字段,并从值列表中省略它:CREATE TABLE NEW_TABLE (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, col1 …, col2 …, …);INSERT INTO new_table (col1, col2, ...

MySQL查询主键上的慢查询表【代码】

所以我有一个基本上像NoSQL设置一样使用的表.结构是: id bigint主键数据媒体修改后的时间戳 它有大约350k行.在其上运行的查询的结构如下: 从表中选择数据,其中id = XXX; 表引擎是InnoDB.我注意到有时针对此表运行的查询相当慢.有时它们需要3秒才能运行.该表在磁盘上是3 GB,我给了innodb_buffer_pool_size 4G. 这里有什么我想念的吗?我可以调整任何设置以提高性能吗? 编辑:按要求解释输出:+----+-------------+----------+---...

mysql – 主键位置【代码】

主键是否必须是数据库表中的第一个字段? 如果我把ID放在名字之后,查询会慢吗?CREATE TABLE users (name TEXT NOT NULL,id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,site INTEGER NOT NULL,... ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;解决方法:我认为这将完成以前的答案: “每个表只能有一个AUTO_INCREMENT列,它必须被索引,并且它不能具有DEFAULT值.只有当AUTO_INCREMENT列只包含正值时,它才能正常...

mysql – 获取我刚插入Spring的主键【代码】

我在MySQL中的表中插入一行.这是代码:public final String SQLADDPROJECT="insert into table(value1,value2,value3) values(?,?,?)"; getJdbcTemplate().update(SQLADDPROJECT, new Object[]{model.getValue1, model.getValue2(),model.getValue3()});这个insert语句工作正常,模型不为null.该表有一个自动增量的主键,我想获得该键,所以我可以在以后的代码中使用它.我做了一些搜索,并使用了keyHolder,这样:KeyHolder keyHolder =...

mysql使用多个主键进行REPLACE查询【代码】

所以MYSQL的REPLACE命令(不要与字符串替换函数混淆)如果存在与插入数据具有相同主键的列,则替换一行… 但是,如果我有两个主键并且我想同时使用它们来指定要替换的行而不仅仅是其中一个…如何指定mysql以使用两个键而不仅仅是一个解决方法:它应该没有区别,它是相同的语法.请确保将两个键都指定为列.例如:REPLACE INTO `my_table` ( `key1`, `key2`, `othercolumn1` /* , ... */ )VALUES ( 'widgets', 14, 'Blue widget with purple...

MySQL PHP:获取多个/复合主键的last_id【代码】

我需要获取具有多列主键的表的最后插入ID. >这些表没有AUTOCOUNT列.>我正在使用参数化查询(任意顺序)>使用PHP(5.3)和MySQLi模块>任意INSERT SQL查询. (任何格式) 例如:Table: foo Primary key: [ group_id , user_id ] Query: INSERT INTO foo (group_id, user_id, name, email) VALUES (?, ?, ?, ?); Parameters: array(34,15,"John","john@example.com")结果:$last_id = $mysqli-> insert_id?:getInsertedId();34,15此时我有...

java – LONG作为Hibernate映射到MySQL的主键【代码】

我试图通过Hibernate映射到MySQL表来实现一些Java对象的持久性.当我提交时,我收到一条消息,说“批量更新从更新[0]返回了意外的行数;实际行数:0;预期:1′. 我的假设是问题是由于我的Java POJO中有一个长字段,我想用它作为MySQL表中的主键.由于我无法使用数据类型LONG作为我在MySQL表中的主键(ERROR 1170:BLOB / TEXT列’id’在密钥规范中使用而没有密钥长度)我从一些谷歌搜索得出结论,这post BIGINT将是合适的映射很长.但它没有更...