这是我的货桌。
+----------------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------------+---------------+------+-----+---------+-------+
| ID | decimal(18,0) | NO | PRI | | |
| gkey | varchar(255) | YES | MUL | NULL | |
| GOODS | decimal(18,0) | YES | MUL | NULL | |列ID为自动递增。商品是商品类别的id。这是商品类别表。
+-------+---------------------+
| ID | NAME |
+-------+---------------------+
| 1 | book |
| 2 | phone |
+-------+---------------------+我的问题是在goods表中,我需要gkey也是一个带有前缀- id的唯一键(这里的id从1开始)。就像书-1,书-2...电话-1,电话-2...将新的商品记录插入到商品表中时。就像这样:
+--------------------+---------------+------+-----+---------+-------+
| ID | GKEY |GOODS | PRI | COUNTRY | Extra |
+--------------------+---------------+------+-----+---------+-------+
| 1 | BOOK-1 | 1 | 10 | | |
| 2 | PHONE-1 | 2 | 12 | | |
| 3 | BOOK-2 | 1 | 13 | | |
| 4 | BOOK-3 | 1 | 10 | | |
| 5 | PHONE-2 | 2 | 10 | | |
| 6 | PHONE-3 | 2 | 20 | | |
+--------------------+---------------+------+-----+---------+-------+ 如何在PHP+MYSQL中获取GKEY?
谢谢。
发布于 2010-12-14 15:45:39
可以使用UNIQUE约束。有关更多信息,请查看here。
发布于 2010-12-14 15:46:21
我觉得你根本不想这么做。相反,good.gkey应该是goods_category.id的外键。如果插入顺序很重要,您可以将insert_date日期字段添加到goods表中。
在那里,您可以运行所有类型的查询,另外还有一个好处,就是在表上具有引用完整性。
发布于 2010-12-14 15:50:24
首先,你应该在数据库端做所有的事情。所以没有php。这就是我的建议。
然后在MySQL中没有序列,我会建议你:
SELECT COUNT(id)
FROM GOODS
WHERE GKEY LIKE('BOOK-%')然后你插入
INSERT INTO goods (id, "BOOK-" || SELECT MAX(SUBSTR(LENGTH(GKEY -1), LENGTH(GKEY))FROM GOODS WHERE GKEY LIKE('BOOK-%') + 1, ...)这样,您将始终拥有下一个可用的号码。
https://stackoverflow.com/questions/4436895
复制相似问题