首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于另一个表列的MYSQL表列约束

基于另一个表列的MYSQL表列约束
EN

Stack Overflow用户
提问于 2016-03-29 21:18:04
回答 1查看 34关注 0票数 1

这是我的第一篇文章,我是mysql新手,所以我很抱歉这个问题太长了。

背景

我有一个带有外部字段'cctypeID‘的查找表cctypevals,在mysql中应该是:

代码语言:javascript
复制
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的作用就像一个“多”键查找表,例如:

从cctypeID ='serviceTYPE‘的cctypeID中选择值

可能返回HomeVisit、BackToBase等

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

问题

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

EN

回答 1

Stack Overflow用户

发布于 2016-03-29 21:26:29

在create或alter table语句中,您不能这样做,因为check约束可以做到这一点,但是mysql还没有实现check约束(mysql可以解析check约束,但它不能工作)。

您可以创建before insert和update触发器,以检查特定的限制;如果更新的值不满足要求,则创建raise an sql error message

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36285483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档