嗨,我有以下查询,运行良好,但我知道需要将插入表中生成的唯一id添加到目标表中
insert into claims.third_party(tp_names,tp_insurer,tp_registration)
select c.tpnames,c.tpinsurers,c.tpregistration from claims as c;
换句话说,我需要返回唯一的id并将其添加到源表中,创建一个外键链接。
我有一个具有自动递增主键的表。我想在其中插入一行,但返回其他内容为LAST_INSERT_ID。阅读手册时,我认为可以这样做:
CREATE TABLE test (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
number BIGINT
);
INSERT INTO test (number) VALUES (LAST_INSERT_ID(50));
SELECT LAST_INSERT_ID();
我希望它返回50,但它返回1。
指出:
mysql_insert_id()的返回值可以简化为以下顺序:
如果存在AUTO_INCR
email_address
-------------
id
prefix
fqdn
前缀和fqdn在一起形成一个唯一的键。
我想写一个查询,如果电子邮件地址还没有在表中,它将进行插入。如果地址已经在表中,它应该返回id。
是否有一种方法可以编写一个行为类似于INSERT INTO email_address(prefix, fqdn) VALUES (?, ?) ON DUPLICATE SELECT id as LAST_INSERT_ID WHERE prefix = ? AND fqdn = ?的查询(如果它是合法的)?
基本上,我想在一个查询中进行插入或选择。
我有三个关系表,下面是我想做的。
将数据插入表中
获取最后插入的行id。
将最后插入的行id插入关系表中。
我得到这个错误:无效的列名LastInsertID
Private Sub cmdSave_Click(sender As Object, e As EventArgs) Handles cmdSave.Click
cn.Open()
Using cmd As New SqlClient.SqlCommand("INSERT INTO ParentInformation(father_firstname,father_lastname,f
我正在尝试将最后一个ID插入到mysql中同一行的不同列中。这就是我尝试过的
Insert Query
"INSERT INTO table(char,name) VALUES (LAST_INSERT_ID(),'KOKO')"
This is the Output
ID | char | name |
1 | 0 | KOKO |
但是,我希望在插入一行时,列char也会插入ID值;这是我所期望的
ID | char | name |
1 | 1
在PHP INTO UPDATE时,如果行被更新,我将继续获得下一个自动增量,而不是更新后的行。在同一个数据库中,但在另一个表中,我在重复键更新时没有这种行为。相反,我得到更新行的id。但是,由于某种原因,在我创建的新表中,我一直得到一个根本不存在的id。这两个表都是MyISAM,并有一个自动增量字段。我不明白他们为什么表现得不同。
示例:
==================================
Table: example
==================================
id | unique_field | data
==========
如何编写存储过程以添加具有多个地址的人员记录?
如果这个人只有一个地址,这很容易,但我不知道如何编写一个存储过程来添加多个地址的人。以下是添加具有一个地址的人的存储过程:
DELIMITER $$
CREATE PROCEDURE `log`.`spAddPerson` (
IN personID INT,
IN personName VARCHAR(100),
IN addressLine1 VARCHAR(45),
IN addressLine2 VARCHAR(45),
IN myCity VARCHAR(45),
IN myState VARCHAR(45)
我正在执行类似的INSERT...SELECT查询
INSERT INTO table (value1, value2)
SELECT 'stuff for value1', 'stuff for value2' FROM DUAL
WHERE NOT EXISTS (SELECT * FROM table
WHERE value1='stuff for value1' AND value2='stuff for value2')
LIMIT 1
,其中的表有自动转换的id。
当然,我想知道它是否被插入。我认为这
我有用于数据的主表:表名:master_tbl
id是自动增量
id name age sex
1 Mario 13 M
2 Luigi 14 M
3 Princess 13 F
在master_tbl (姓名、年龄、性别)中插入值('Mario',13,'M');
然后,我有其他用于活动表名称的表:activity
id也是反增量的
id_ref应该从master_tbl获得id
id id_ref exercise duration
1 1 Runnin
使用PHP,我将在MySQL数据库中插入一个记录。如果记录是新的,我将得到insert_id,但如果它已经存在,则无法使用单个查询获得id。
以下两个查询都允许我添加或跳过已经存在的记录:
INSERT INTO `emails` (`email`) VALUE ('abc@example.com') ON DUPLICATE KEY UPDATE `id`=`id`
INSERT IGNORE INTO `emails` (`email`) VALUE ('abc@example.com')
在这两种情况下,获得正确结果的正确方法是什么?
编辑:这里是我的表
我在vitess上使用MySQL,我的java应用程序运行在docker版本19.03上。当我使用hibernate在数据库表中添加任何记录时,它将显示错误。
不受支持: LAST_INSERT_ID只允许用于未分割的键空间。
不知道为什么这个错误会显示,因为我没有写到任何地方
select last insert id
我通过hibernate保存()函数添加记录,并且没有使用任何insert/update查询。
MySQL AFTER INSERT触发器总是直接在INSERT语句之后执行,还是有可能发生2个插入,然后发生2个触发器?
我在写这个触发器,也就是:
CREATE DEFINER=`p28004_bf4`@`localhost` TRIGGER `setId`
AFTER INSERT ON `playerkills`
FOR EACH ROW
BEGIN
INSERT INTO globals () VALUES();
UPDATE playerkills SET globalId = LAST_INSERT_ID() WHERE id = R
我有一个关系MySQL数据库,如下所示:
COMMAND SOURCE DESTINATION
id id id
datetime name name
source_id location_id data_type
destination_id
LOCATION
id
name
命令可能有多个源和目标,源可能有多个位置。
我收到一个具有以下值的命令(命令ID自动递增):