如何在mysql,php的单个查询中设置与自动递增ID值相同的任何列值[重复]

Posted

技术标签:

【中文标题】如何在mysql,php的单个查询中设置与自动递增ID值相同的任何列值[重复]【英文标题】:how to set any column's value same as auto increment id's value in single query in mysql,php [duplicate] 【发布时间】:2013-07-29 01:58:19 【问题描述】:

如何在单个查询中设置任何列的值与 mysqlphp 中的自动递增 id 的值相同, 如果答案是触发器,那么请建议如何做到这一点?

我的桌子:

id int : auto increment
my_id int : want same value as id
title varchar

【问题讨论】:

只是好奇?你为什么需要那个? 将两列设置为自动递增:P 其实我需要order栏,默认是最后一个,以后可以改 看我有一张桌子,每当我添加任何我想将其订单字段设置为最后的记录时,我正在通过“订单”字段获取订单记录,现在如果我将使用 id 进行订单那么以后就没有机会改变顺序了 @HeinA.Grønnestad 只有主键可以是自动增量 【参考方案1】:

您可以通过使用触发器来做到这一点:

CREATE TRIGGER tinsert_id BEFORE INSERT ON your_table FOR EACH ROW
BEGIN
 SET NEW.my_id= (SELECT AUTO_INCREMENT FROM information_schema.tables WHERE TABLE_SCHEMA='your_db' AND TABLE_NAME='your_table');
END

上面的代码没有经过测试,但它应该可以这样工作。

重要提示:还要注意,上述触发器仅对单行插入有效。对于高并发应用程序也不安全。因此,我强烈建议您为 my_id 字段分配一个默认值,并根据您的应用程序稍后使用更合适的内容更新此字段。

【讨论】:

【参考方案2】:

应该工作:

CREATE TRIGGER `update_my_id` BEFORE INSERT ON `tablename` FOR EACH ROW SET NEW.my_id = LAST_INSERT_ID() + 1;

【讨论】:

以上是关于如何在mysql,php的单个查询中设置与自动递增ID值相同的任何列值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 GCP 中设置与 MongoDB Docker 容器的连接

如何在 React 中设置与主页的正文图像不同的样式?

如何在 Kubernetes 上的 Quarkus 中设置与 Keycloak 的 OIDC 连接

如何在 PEP484 之后的方法参数中设置与类相同的类型? [复制]

如何在 Perl 中设置与 DBIx::Class 的多主列 1:n 关系?

如何让SELECT 查询结果额外增加自动递增序号sqlserver