我正在寻找为一个属性使用两种可能性的可能性。这是一个例子:
CREATE TABLE person (
name VARCHAR(200),
age INTEGER CONSTRAINT adult
CHECK (age >= 18)
)
如果年龄超过18岁,代码将会调用一名成人,但现在我希望如果他未满18岁就会被称为儿童。
CREATE TABLE Person (
Id INTEGER NOT NULL PRIMARY KEY,
power_level INTEGER NOT NULL,
evilness_level INTEGER NOT NULL,
name VARCHAR(256) NOT NULL UNIQUE,
)
或此处如果该人的evilness_level为< 0这是一个超级英雄,否则它是一个超级恶棍。
祝你有个美好的一天!
答案 0 :(得分:1)
您可以尝试创建类似
的TRIGGERCREATE TRIGGER trig_evilness_level_check BEFORE INSERT ON Person
FOR EACH ROW
BEGIN
IF NEW.evilness_level < 0 THEN
SET NEW.Name = 'super hero';
ELSE
SET NEW.Name = 'super villain';
END IF;
END
同样,您也可以为年龄检查创建触发器。
建议创建TRIGGER而不是CHECK约束的原因从manual可以清楚地看出:
CHECK子句被解析但被所有存储引擎忽略。