子查询中的SQL检查约束 - Sybase

时间:2014-03-07 11:29:06

标签: sql database sybase

我正在尝试将一个约束添加到Sybase表中以检查引用表中是否存在两个用户提供的值以确保它们的有效性,它们提交的表单上的某些日期也必须匹配某些日期条件。相同的参考表。

但是,Sybase似乎不允许CHECK约束中的子查询? 我已经在下面提供了我到目前为止所提出的内容。

如何帮助我解决这个问题会很棒。

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))))

1 个答案:

答案 0 :(得分:0)

使用insert before触发器。此外,您应该始终避免使用这样的派生检查约束。在这种情况下,触发器更为可取。

我以前没有参与过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