
1 luckyrayyy 2020-10-15 23:59:26 +08:00 完全想不到这么做的意义.... |
2 meteor2013 OP @luckyrayyy 兄台,有些时候一言难尽。能否只提供办法 |
3 Jacky23333 2020-10-16 00:04:45 +08:00 via Android 分两步啊 |
4 wsfdljy 2020-10-16 00:17:11 +08:00 建个 view 查询的时候用,然后把 id 那个字段取两个别名。 |
5 wsfdljy 2020-10-16 00:25:16 +08:00 非要存两列,可以试下在一个事务里:先 insert,然后 update table set xx=LAST_INSERT_ID() where id = LAST_INSERT_ID(); 只是一个想法,没验证过,你自己试一下。 |
6 lpts007 2020-10-16 00:54:36 +08:00 “一言难尽”的事能具体说说吗,大家对此很好奇。问题本身根本不关心。 e.g. 我坐地铁前必须把拳头塞进嘴里,但是嘴巴撑得慌,请问大家有什么好办法? 提出这种问题,不要怪大家问你为什么要塞进嘴里 |
7 lpts007 2020-10-16 00:57:28 +08:00 |
8 airqj 2020-10-16 07:31:51 +08:00 via Android 虚拟列也许可以 |
9 GiantHard 2020-10-16 07:58:56 +08:00 via iPhone |
10 iminto 2020-10-16 08:42:03 +08:00 很简单,模拟序列就好了 |
11 defage 2020-10-16 09:36:17 +08:00 来个存储过程就好了。 这个在很多需要审计的数据中很常见,DB 一层记录行为,防止有人利用程序干涉数据安全 |
12 defage 2020-10-16 09:37:44 +08:00 不用触发器相当于就是要尿尿又不让用 jj |
13 makia98 2020-10-16 09:59:31 +08:00 用事务啊 |
14 1194129822 2020-10-16 10:45:02 +08:00 没什么一步方法,LAST_INSERT_ID()线程安全,但是是 connection 连接后上一个插入的自增 id,没插入前还没生成。 select auto_increment from information_schema.tables where table_schema ='db_name' and table_name='xxx'; 线程不安全,auto_increment connection 共享。 所以保证原子性,一致性。只能用事务,先插入再更新。 |
15 DavidNineRoc 2020-10-16 10:52:37 +08:00 所以说有什么用呢? |
16 gochat 2020-10-16 11:02:05 +08:00 @lpts007 我说一个我之前看到的很傻的场景,前端要求后端生成分享的 url,一个表里面假设有 id,share_url 两个字段,而 share_url (假设为: https://www.test.com/test/test?id=xxx )中的 GET 参数有个 id 字段,等于当前表里的 id,你在新增表记录的时候,并不知道这个 id 是多少,只能 insert 后再去 update 。 |
17 seanxx 2020-10-16 11:21:11 +08:00 手动生成,不用自增 |
20 gochat 2020-10-16 14:01:50 +08:00 @lpts007 接口读不大到这个 url,那就出出错啊,我说的是这个场景,这个 url 必须你提供,但 url 地址又跟自增 id 有关系,在新增的时候你又不知道 id 是多少,听明白了之间的矛盾了不 |
22 lpts007 2020-10-16 14:14:04 +08:00 via Android |