gpt4 book ai didi

MYSQL 表列约束基于其他表列

转载 作者:行者123 更新时间:2023-11-28 23:34:12 25 4
gpt4 key购买 nike

这是我的第一篇文章,我是一个 mysql 菜鸟,所以对于这个问题的长度,我深表歉意。

背景

我有一个查找表 cctypevals,其中有一个外部字段 'cctypeID',在 mysql 中这将是:

CREATE TABLE `cctypevals` (
`cctypevalsKEY` integer NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`cctypeID` varchar(50) NOT NULL, FOREIGN KEY(cctypeID) REFERENCES cctype(cctypeID) ,
`value` varchar(50) )

cctypeID 包含来自用户表的字段名称,例如“taskSTATE”、“serviceTYPE”、“projectCAT”等。

值字段包含这些用户表字段的唯一允许值。

因此 cctypevals 就像一个“多”键查找表,例如:

从 cctypevals 中选择值,其中 cctypeID ='serviceTYPE'

可能返回 HomeVisit、BackToBase 等

我知道每个字段有一个查找表会更容易,但这就是我所拥有的。

问题

我如何约束(在 sql create table 或 alter 语句中)具有 task.taskSTATE、service.serviceTYPE 等字段的表,以便它们只能接受来自 cctypevals 的值。value 其中 cctypeID 包含适当的字段名称?

最佳答案

在 create 或 alter table 语句中你不能这样做,因为 check 约束可以做这样的事情,但是 mysql 还没有实现 check 约束(mysql可以解析一个检查约束,但它不会工作)。

您可以在检查特定限制和 raise an sql error message 的插入和更新触发器之前创建如果更新后的值不符合要求。

关于MYSQL 表列约束基于其他表列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36285483/

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