gpt4 book ai didi

mysql - SQL 查询以插入列值,该列值被视为引用 ID

转载 作者:行者123 更新时间:2023-11-29 04:45:03 25 4
gpt4 key购买 nike

你好 friend 我知道这是一个愚蠢的问题。但是我的思绪停止工作,我被困在这个位置。如果有人对这个问题有任何解决方案,请帮助我。

我想要MysqlSQL Server 的解决方案

我有一个名为 reference 的表,它具有结构

id          int(10)     AUTO_INCREMENT   
reff_id varchar(100)
pid int(11)

在哪里

id - 自动增量值

reff_id - 这是一个具有 XYZ#ddmmyyyyid 格式的唯一字符串(其中 id 是相同的行 id(自动增量值))并且 XYZ 是任何长度为 3 的随机字符串

pid - 这是名为 product

的表的外键

我需要一个查询来将值插入表中,并且查询必须使用上述逻辑动态插入 reff_id

感谢任何帮助。 :) :)

注意

我想要一个查询,它在插入时计算 reff_id 的值,其中日期格式表示当前日期

最佳答案

有一种方法可以完成您计划要做的事情,但如果对同一个表有并发访问/插入,它可能会失败。

MySQL版本:

INSERT INTO refference (reff_id, pid)
VALUES (
CONCAT('XYZ#', DATE_FORMAT(now(),"%d%m%Y"), CAST(
(SELECT AUTO_INCREMENT FROM information_schema.TABLES
WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='refference')
AS CHAR)), 1
)

SQL 服务器版本:

INSERT INTO refference (reff_id, pid)
VALUES (
'XYZ#' + REPLACE(CONVERT(VARCHAR(10), GETDATE(), 103), '/', '') + CAST(
(SELECT IDENT_CURRENT('refference')+1)
AS VARCHAR(30))), 1
)

由于并发性,这些很容易出现问题,因为如果多个用户同时插入,那么 AUTO_INCREMENT/IDENT_CURRENT 值可能会在执行 SELECT 和 INSERT 语句之间发生变化。直到新记录实际插入表中时,才会生成自动增量值。

更好的方法是使用 TRIGGERS,这意味着您插入一个空行,然后将记录更新为 SET reff_id 列。在那里你可以使用 LAST_INSERT_ID() (mysql) 和 @@IDENTITY (sql server) 函数。

关于mysql - SQL 查询以插入列值,该列值被视为引用 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20518565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com