【发布时间】:2014-03-16 22:53:00
【问题描述】:
我被一个项目设计困住了。其中一张表与 users 表有 1-M 的关系。所以它有一个外键。同一个字段也是主键。
如下表
物品编号:
- 主键
- 自动增量
用户名:
- 主键
- users表中id的外键
物品名称:
- 不为空
价值观:
-----------------------------------------
| **ITEMID** | **USERID** | ITEMNAME |
-----------------------------------------
| 1 | 1 | fooooooo |
-----------------------------------------
| 2 | 1 | tinytext |
-----------------------------------------
| 3 | 1 | MediumText |
-----------------------------------------
| 4 | 2 | LARGEtext |
-----------------------------------------
| 5 | 2 | HUGETEXT |
-----------------------------------------
| 6 | 1 | BLOOOOOB |
-----------------------------------------
| 7 | 3 | 001010101 |
-----------------------------------------
这是当前设计的结果。我想知道的是,这是一种为每个用户分别自动递增的方法。
类似于“自动增量项目 ID GROUP BY 用户 ID”
-----------------------------------------
| **ITEMID** | **USERID** | ITEMNAME |
-----------------------------------------
| 1 | 1 | fooooooo |
-----------------------------------------
| 2 | 1 | tinytext |
-----------------------------------------
| 3 | 1 | MediumText |
-----------------------------------------
| 1 | 2 | LARGEtext |
-----------------------------------------
| 2 | 2 | HUGETEXT |
-----------------------------------------
| 4 | 1 | BLOOOOOB |
-----------------------------------------
| 1 | 3 | 001010101 |
-----------------------------------------
有没有办法使用mysql做到这一点?
【问题讨论】:
-
您有 2 个具有自动递增主键的表,并且具有一对多的关系。我不明白问题出在哪里。
-
抱歉,我清除了问题并更新了问题。我想要做的是通过用户 ID 的出现自动增加 itemid。
-
您应该在表项上的 INSERT 上使用触发器
-
CREATE TRIGGER ai_seperatly BEFORE INSERT ON table FOR EACH ROW BEGIN IF user_id = 'theid' SET %maxid = %maxid + 1; END; INSERT INTO table VALUES ('theid',%maxid,'foo')我设法写了这个,但触发器需要将插入的用户 ID。是否可以将值插入触发器? @CodeBird
标签: mysql sql auto-increment ddl