我尝试在insert
同一查询中搜索多种表中信息的方式,但发现这是不可能的吗?所以我想要insert
通过简单地使用多个查询即
INSERT INTO users (username, password) VALUES('test', 'test')
INSERT INTO profiles (userid, bio, homepage) VALUES('[id of the user here?]','Hello world!', 'http://www.stackoverflow.com')
但是,如何为表赋予id
从users
到“手动” 的自动增量?userid``profile
不,您不能在一个MySQL命令中插入多个表。但是,您可以使用事务。
BEGIN;
INSERT INTO users (username, password)
VALUES('test', 'test');
INSERT INTO profiles (userid, bio, homepage)
VALUES(LAST_INSERT_ID(),'Hello world!', 'http://www.stackoverflow.com');
COMMIT;
看一下LAST_INSERT_ID()
重用自动增量值。
var放入所有MySQL命令中?_ ”
让我详细说明一下:这里有3种可能的方式:
LAST_INSERT_ID()
第二条语句中的 in将自动成为在第一条语句中插入的autoincrement-column的值。不幸的是,当第二条语句本身在具有自动增量列的表中插入行时,LAST_INSERT_ID()
它将被更新为表2的表,而不是表1的表。如果此后仍需要表1的表,我们将必须将其存储在一个变量中。这将我们引向方法2和3:
将LAST_INSERT_ID()
在MySQL变量中存储:
INSERT ...
SELECT LAST_INSERT_ID() INTO @mysql_variable_here;
INSERT INTO table2 (@mysql_variable_here, …);
INSERT INTO table3 (@mysql_variable_here, …);
将以LAST_INSERT_ID()
php变量(或您选择的任何可以连接到数据库的语言)存储:
INSERT ...
LAST_INSERT_ID()
,方法是在MySQL中执行该文字语句,或者使用例如php mysql_insert_id()
来为您完成的操作INSERT [use your php variable here]
无论选择哪种解决方案,都必须决定 在查询之间执行被中断
(例如,数据库服务器崩溃)时应该发生什么。如果您可以忍受“有些已经完成,有些还没有完成”,请不要继续阅读。
但是,如果您决定“要么所有查询都完成,要么都没有完成-
我不希望某些表中的行,但又不希望某些表中的行匹配,我总是希望我的数据库表是一致的”,则需要将所有语句包装在事务中。这就是为什么我在BEGIN
和COMMIT
那里使用。
如果您需要更多信息,请再次评论:)
表规范 命名统一小写下划线 非CMF核心应用,统一带应用表前缀,如portal_ 插件表,统一带插件表前缀,如:demo_ 表默认编码utf8mb4,默认排序规则utf8mb4_general_ci 引擎统一innodb 写表注释 字段规范 命名统一小写下划线 非自增主键一定要写字段注释 数据类型尽量用数字类型,数字类型的比字符类型的要快很多。 数据类型尽量小,这里的尽量小是指在满足可以预见的未来
表规范 命名统一小写下划线 非CMF核心应用,统一带应用表前缀,如portal_ 插件表,统一带插件表前缀,如:plugindemo 表默认编码utf8mb4,默认排序规则utf8mb4_general_ci 引擎统一innodb 写表注释 字段规范 命名统一小写下划线 非自增主键一定要写字段注释 数据类型尽量用数字类型,数字类型的比字符类型的要快很多。 数据类型尽量小,这里的尽量小是指在满足可以
问题内容: 我需要将数据从一个数据库迁移到另一个数据库,两者都在同一本地系统上。 表和列的名称不同,我不能从旧数据库迁移所有列,因此 对我不起作用。 但我只有一个 我的查询中有什么错误,我该如何解决? 提前致谢 问题答案: 您的查询应如下所示: 更新 由于这个答案的关注程度超出了我的预期,因此我应该扩展这个答案。首先,从答案本身看可能并不明显,但各列不必具有相同的名称。因此,以下操作也将起作用(假
上一小节介绍了如何设计数据表,并合理选择字段数据类型新建数据表,本小节来介绍数据表的设计规范,主要遵循数据表设计三范式和适当的反范式化。 1.第一设计范式 第一设计范式要求表中字段都是不可再分的,如果实体中的某个属性有多个值时,必须拆分为不同的属性 。通俗理解即一个字段只存储一项信息,如下图所示,其中联系方式可以拆分为手机、邮箱、固定电话,所以下图不符合数据表第一设计范式要求: 纠正之后符合第一设
问题内容: 我正在使用Ruby on Rails 3.0.7和MySQL5。在我的应用程序中,我有两个数据库表,即TABLE1和TABLE2,并且出于性能原因,我对TABLE2中的某些数据进行了非规范化,因此我在该表中重复了TABLE1的值。现在,在TABLE1中,我需要更新一些涉及的值,当然,我还必须在TABLE2中正确地更新非规范化的值。 我该如何以高效的方式更新这些值? 也就是说,如果TAB
问题内容: 我有一个来自csv的数组,其结构与此类似: 我想将其插入到mysql表中,其中第一个数组的项(名称,年龄,性别)是列标题,而每个后续数组是表中的一行。 有人能建议我做这件事的最好方法,因为我撞墙了,这使我头疼! 问题答案: 以下代码将起作用,但是假定所有嵌套数组的长度都相同,换句话说,每个嵌套数组都包含第一个嵌套数组中定义的所有属性的值。 只要所有其他嵌套数组的长度相同,该解决方案就可