子查询中的SQL检查约束-Sybase
我正在尝试向Sybase表添加一个约束,以检查引用表中是否存在两个用户提供的值,以确保它们的有效性,它们提交的表单上的某些日期也必须与同一引用表中的某些日期条件相匹配 但是,Sybase似乎不允许在检查约束内进行子查询? 我已经在下面提供了我到目前为止的想法 如果能帮我解决这个问题,那就太好了子查询中的SQL检查约束-Sybase,sql,database,sybase,Sql,Database,Sybase,我正在尝试向Sybase表添加一个约束,以检查引用表中是否存在两个用户提供的值,以确保它们的有效性,它们提交的表单上的某些日期也必须与同一引用表中的某些日期条件相匹配 但是,Sybase似乎不允许在检查约束内进行子查询? 我已经在下面提供了我到目前为止的想法 如果能帮我解决这个问题,那就太好了 ALTER TABLE accomodation_t ADD CHECK (accomodation_t.requested_type_code, accomodation_t.provided_ty
ALTER TABLE accomodation_t
ADD CHECK (accomodation_t.requested_type_code, accomodation_t.provided_type_code IN
(SELECT(ref.accom_req_typ_cde, ref.accom_prov_typ_cde
FROM acc_type_ref_t ref, accomodation_t ac
WHERE ac.accm_recd_date >= ref.eff_date
AND (ref.term_dte = '01/01/1900' OR ac.accom_recd_dte <= ref.term_dte))))
在触发器之前使用insert。此外,您应该始终避免使用这样的派生检查约束。在这种情况下,触发器更可取
我以前没有在sybase上工作过,但下面将是一个示例
CREATE TRIGGER check_constraint_trigger BEFORE INSERT
ON accomodation_t FOR EACH STATEMENT
BEGIN
accomodation_t.requested_type_code,
accomodation_t.provided_type_code IN
(SELECT(ref.accom_req_typ_cde, ref.accom_prov_typ_cde
FROM acc_type_ref_t ref, accomodation_t ac
WHERE ac.accm_recd_date >= ref.eff_date
AND (ref.term_dte = '01/01/1900' OR ac.accom_recd_dte <= ref.term_dte)))
END
相反,在触发器后使用insert。实际上不可能,因为如果不满足这些字段条件,则不应允许插入