我想要做的是让我的主键字段(或其他字段,只要它接受自动递增)自动递增,前面有一个字母。例如:
我希望能够在一个表中使pk等于A1,A2,A3,如果我选择,则在另一个表中选择B1,B2,B3。这可能与django? MySQL的?只要字段自动递增,该字段就不必是主键字段。请告诉我。
答案 0 :(得分:0)
MySQL中没有任何内容可以自动为您执行此操作。你确实有几个选择。
选项1(更好的选项):
使用两个单独的字段,然后在提取信息时将它们组合起来:
CREATE TABLE MyTable (
id int unsigned not null auto_increment,
id_adder char(1) not null
)
然后使用以下所有其他字段来获得所需的结果:
SELECT CONCAT(id_adder, CAST(id AS CHAR)) AS FullPK FROM MyTable
选项2:
您可以根据输入的最后一个值得到下一个值:
CREATE TABLE MyTable (
id varchar(15),
OtherField varchar(30),
UNIQUE (id)
)
插入内容可能如下所示:
INSERT INTO MyTable (id, OtherField)
SELECT CONCAT('A', CAST(CAST(RIGHT(id, LENGTH(id) - 1) AS UNSIGNED) + 1 AS CHAR)),
'Other Field Value'
FROM MyTable
ORDER BY id DESC
LIMIT 1
答案 1 :(得分:0)
单独使用自动递增字段是不可能的。您可以在每个表中设置另一个列,其中一个字母标识表,具有自动递增列,然后将该键组合为两者。您也可以使用触发器进行设置。
但是,这并不完全有意义,因为单个表格中不需要这封信。
我怀疑你正试图解决另一个问题,即在不同的表中有一个实体的多个“类型”(比如一个联系人表,一个用于电子邮件,一个用于邮件,一个用于电话联系) 。如果是这样,另一种方法是使用自动递增id的所有内容的主表,然后在子表中使用此id,以1-1关系定义。