这个问题被简化以减少混乱。
在我的数据库中,我有2个表。 1表"产品"和1表"通知"。
此产品可以是3种类型,由枚举(mydatafile = cStringIO.StringIO(data)
gzipper = gzip.GzipFile(fileobj=mydatafile)
decdata = gzipper.read()
)定义。
通知包含产品的ForeignKey及其ID。
当我创建通知时,我想检查给定的ForeignKey是否属于' APPLICATION'。我可以进行这样的检查吗?如果是,这是由ENUM('SERVER', 'SERVICE', 'APPLICATION')
完成的吗?
据我所知,我唯一可以检查的是一个值(例如CHECK
)
答案 0 :(得分:1)
最简单的做法是触发器Before Insert
和第二个Before Update
。
您可以设置外国人密钥值的SELECT
以在触发器中对其进行测试,并发布错误。
查看CHECK constraint in MySQL is not working
的第二个答案像这样:
DELIMITER $$ CREATE TRIGGER `test_before_insert` BEFORE INSERT ON `Test` FOR EACH ROW BEGIN IF CHAR_LENGTH( NEW.ID ) < 4 THEN SIGNAL SQLSTATE '12345' SET MESSAGE_TEXT := 'check constraint on Test.ID failed'; END IF; END$$ DELIMITER ;
答案 1 :(得分:0)
如果它是枚举,您应该能够检查该值是否等于您想要的结果。
加入你的表,然后使用where子句过滤掉你不想要的结果。您没有提供表格的完整详细信息,因此我将举一个您想要做的简单示例。我的枚举是“类型”列。
以简化形式:
SELECT *
FROM products
WHERE type = 'APPLICATION'