簡體   English   中英

在PostgreSQL中選擇特定單元格的值

[英]select value of specific cell in postgresql

我現在正在處理postgresql中的觸發器,並且在嘗試將新插入的行中的值與現有行中的值進行比較時遇到了麻煩,在現有行中,這兩個行都在某個屬性上匹配。 例:

我有帶有值(class_id,class_name,enrollment_limit)的表Class和另一個帶有值(student_id,class_id)的表Enrolled_in

基本上,我試圖在學生注冊已經達到其注冊限制的班級時設置觸發器。 這是我的比較代碼的樣子。

 IF ((SELECT count(student_id) as num FROM class, enrolled_in
       where new.class_id = enrolled_in.class_id)
       > (select enroll_lmt from class
       where class_id = new.class_id ))  
       THEN RAISE EXCEPTION 'too many enrolled';

我認為大於號后的代碼是錯誤的,但不確定。 我已經嘗試了好幾個小時了。 任何幫助將不勝感激。 謝謝!!

對於BEFORE INSERT的觸發器:

IF (SELECT count(*) >=
          (SELECT enroll_lmt
           FROM   class c
           WHERE  c.class_id = NEW.class_id )
    FROM   enrolled_in e
    WHERE  e.class_id = NEW.class_id
   ) THEN
   RAISE EXCEPTION 'too many enrolled';
END IF;

錯誤是這里不必要的交叉連接: FROM class, enrolled_in 您不需要該查詢的類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM