- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一张区域表,里面可能有很多区。创建表时,我已将区域的 ID 设置为自动递增。
我已经尝试了使用 LAST_INSERT_ID() 在 Internet 上找到的所有解决方案,但都没有用。我收到 LAST_INSERT_ID() 未定义错误、语法不正确或不同步错误。
我正在使用 python 和 mysql
cur.execute('''
INSERT IGNORE INTO area1_tb (
id,
area1
) VALUES (%s, %s)''',
(None, area1,))
cur.execute('''INSERT IGNORE INTO district_tb (
id,
district1,
area1_id
) VALUES (%s, %s, %s)''',
(None, district1, SELECT LAST_INSERT_ID(),))
我需要将 area1_tb 中的 ID 链接到 district_tb 中的 area1_id,但我一直收到错误。
最佳答案
你非常接近。不要SELECT LAST_INSERT_ID()
。只是使用它的值(value)。它是 MySQL 的 SQL 方言中的一个函数
试试这个:
cur.execute('''
INSERT IGNORE INTO area1_tb (
id,
area1
) VALUES (%s, %s)''',
(None, area1,))
cur.execute('''INSERT IGNORE INTO district_tb (
id,
district1,
area1_id
) VALUES (%s, %s, LAST_INSERT_ID())''',
(None, district1,))
而且,如果您想在单个区域中插入多个区域,请尝试将区域插入的 id 存储在 MySQL 变量中,以便您可以重用它:
cur.execute('''
INSERT IGNORE INTO area1_tb (
id,
area1
) VALUES (%s, %s)''',
(None, area1,))
cur.execute('SET @areaId := LAST_INSERT_ID()', Params=None)
cur.execute('''INSERT IGNORE INTO district_tb (
id,
district1,
area1_id
) VALUES (%s, %s, @areaId)''',
(None, district1,))
cur.execute('''INSERT IGNORE INTO district_tb (
id,
district1,
area1_id
) VALUES (%s, %s, @areaId)''',
(None, district2,))
cur.execute('''INSERT IGNORE INTO district_tb (
id,
district1,
area1_id
) VALUES (%s, %s, @areaId)''',
(None, district3,))
后续插入会覆盖 LAST_INSERT_ID(),因此您需要保存它以便重新使用。
关于python - 使用 LAST_INSERT_ID() 将最后创建的 auto_increment 值插入到表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57209478/
我们有一张 table : id int(11) auto_increment name varchar(255) 自动增量等于 1。插入行: INSERT INTO `projects` ( `id
我有一个大表,其 ID 列设置为 bigint auto_increment。在历史上的某个时候,我们决定在客户端生成一些伪随机数的 ID。 我的问题很简单:鉴于表列仍设置为 auto_increme
我有一个 MySQL 数据库,包含一个带有 auto_increment 主键的表。 考虑以下定义足以满足此示例: create table test(id integer not null auto
我只是想知道如果两个用户同时注册帐户会发生什么。AUTO_INCRMENT id 号是相同还是不同? 最佳答案 自增锁定 自动增量主键的便利性需要与并发进行一些权衡。在最简单的情况下,如果一个事务正在
用于与 MySQL++(C++ 库)一起工作 数据库有一些字段,您可以对其进行 AUTO_INCREMENT。如何知道向表中插入新行时这些字段的值是多少? 最佳答案 虽然 stacker 的答案会起作
我有一个sqlite表: 例如 CREATE TABLE TEST (id integer primary key, number integer unique, name text); 但是,我需要
是否有一种标准化的方法可以在 SQL 中创建一个带有自动增量列(我们称之为 ID)的表,以便我基本上可以在所有数据库中使用它? (例如在 SQL-92 中标准化) 如果是这样 - 如何?如果不是,为什
在 MySQL 表中,id 列设置为 auto_increment,下一个 auto_increment 在 phpmyadmin 中设置为 128,但添加的任何新行都将 127 作为 id 行中的值
我的问题是:我有一个包含 auto_increment 列的表。当我插入一些值时,一切正常。插入第一行:ID 1插入第二行:ID 2 现在我想在 ID 10 处插入一行。 我的问题是,在此之后只有 I
您好,我知道这个问题以前有人问过,但我问的不同,我想要的是在删除表中的一行后重置 auto_increment 列。如果我有 51 行的表并且我删除了第 48 行,我希望第 49 行重置为 48,50
我正在尝试将 AUTO_INCREMENT 设置为某个值,但我遇到了语法错误。我不确定它是什么,因为我查看了文档并且看起来没问题。但是肯定有错误。 编辑 - 抱歉,我正在使用 mysql phpmya
在我的程序中,我将记录插入表tbl_name。但是我收到了“主键重复条目”错误,这让我很困惑,这是我的代码和错误。 表: CREATE TABLE `tbl_name` ( `id` int(20)
我使用 MySQL 的 AUTO_INCRMENT 字段和 InnoDB 来支持事务。我注意到当我回滚事务时,AUTO_INCRMENT 字段没有回滚?我发现它是这样设计的,但是有什么解决方法吗? 最
我使用 MySQL 的 AUTO_INCRMENT 字段和 InnoDB 来支持事务。我注意到当我回滚事务时,AUTO_INCRMENT 字段没有回滚?我发现它是这样设计的,但是有什么解决方法吗? 最
我需要一些有关 MySQL 的帮助。我的 news 表上有 id 列,并且通常为第一个新闻分配 id=1,id= 2 第二个等等。但我希望它以 001 而不是 1 开头,然后是 002, 003 等等
我需要创建一个带有自动递增主键的表,所以我这样做: String sql = "CREATE TABLE Home" + "(id INTEGER not
user 表在 user_id 上定义时未使用 AUTO_INCRMENT。我想将其更改为 AUTO_INCRMENT 字段。但问题是 user_id 被外键约束中的许多表引用。 我们可以在不删除所有
我正在使用 MySQL 进行数据库项目,并且我的一个表使用组合键作为 PK,entry_ID+user_ID(FK)。 这是表结构: | address_list | CREATE TABLE `ad
我有一些使用带有自动增量功能的主键的MySQL表,这一切似乎都是在第一次插入记录时发生的,但是当我删除中间的任何记录时,它不会重置自动增量计数器,而是继续使用最后一个ID . 例如,我已插入具有以下
我有如下表格 个人信息 CREATE TABLE personalInfo(userid BIGINT AUTO_INCREMENT PRIMARY KEY) 专利信息 CREATE TABLE pa
我是一名优秀的程序员,十分优秀!