gpt4 book ai didi

mysql - 主键列值作为两个列值结合不同的格式

转载 作者:行者123 更新时间:2023-11-29 13:16:22 24 4
gpt4 key购买 nike

所以我想创建一个主键,将日期值的年份与 - 结合起来,然后是一个订单号的外键值。

基本上:2010-244

这是我尝试过的,(我知道我应该解析日期字符串的一部分):

ORDERNR int(11) NOT NULL,
RECEIPTDATE DATE,
RECEIPTNR as RECEIPTDATE + "-" + ORDERNR INT NOT NULL UNIQUE,
FOREIGN KEY (ORDERNR) REFERENCES ORDER(ORDERNR),
PRIMARY KEY (RECEIPTNR)) ENGINE=INNODB;

最佳答案

MySQL 不提供基于函数的索引(对字符串中的前导字符进行索引是一个小异常(exception))。换句话说,你想在表达式上创建索引,而 MySQL 不支持。

如果日期的“年份”部分是唯一的,则数据每年只能有一个日期。因此,您可以拥有整个日期的唯一索引。

这将被接受为主键:

unique (RECEIPTDATE, ORDERNR);

但这并不能让您在一年内获得独特性。

另一种选择(我不推荐,但我建议是因为它可能有效)是将日期存储在 YYYY-MM-DD 格式的字符串中。然后你可以这样做:

unique (RECEIPTDATESTRING(4), ORDERNR)

另一种方法是使用一个触发器来测试唯一性。

进一步的建议。不要创建复合主键,特别是当其中一个键只是列的一部分时。相反,对字段使用唯一约束并使用自动递增的主键。

关于mysql - 主键列值作为两个列值结合不同的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21406136/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com