【发布时间】:2023-03-24 06:13:01
【问题描述】:
首先我创建一个简单的函数:
CREATE FUNCTION MY_FUNCTION(IN MY_ID BIGINT) RETURNS BOOLEAN
SPECIFIC MY_FUNCTION_WITH_BIGINT LANGUAGE SQL NOT DETERMINISTIC READS SQL DATA RETURNS NULL ON NULL INPUT
RETURN MY_ID IN (SELECT ID
FROM TABLE1
WHERE NAME IN ('name1', 'name2'));
然后我尝试在CHECK 约束中使用它:
ALTER TABLE TABLE2 ADD CONSTRAINT CONSTRAINT1 CHECK (MY_FUNCTION(C1) = TRUE)
我明白了:
java.lang.RuntimeException: org.hsqldb.HsqlException: invalid expression in CHECK or GENERATED clause
不明白为什么,有没有办法达到想要的效果?
【问题讨论】:
-
为什么不用外键?
-
@a_horse_with_no_name 我愿意,但我希望能够只允许某些值。我无法创建其他表来仅使用外键来解决此问题。
-
据我所知,HSQLDB 不支持用于检查约束的用户定义函数。