给出两张表......
tblEvents (fldEventID, fldAECap, fldDWCap, fldWSCap)
tblSignUps (fldSignUpID, fldEventID, fldPosition)
其中fldPosition中的值1与fldAECap相关,值2与fldDWCap相关,值3与fldWSCap相关;如果fldPosition值的计数等于每个相关的CAP值,我需要阻止任何新记录插入到tblSignUps中。例如,对于fldAECAP,我们可能只有3个分配位置,并且对于给定的EventID,该位置值在fldPosition中出现3次
基本逻辑将归结为......
INSERT INTO tblSignUps
VALUES(NULL,12,3)
WHERE fldWSCap > COUNT(fldPosition(3))
我该怎么做?
答案 0 :(得分:1)
编写所需基本逻辑的方法是:
INSERT INTO tblSignUps
select NULL,12,3 from dual
where exists (
select * from tblEvents where
fldEventId = 12 and
fldWSCap > (select count(*) from tblSignUps where fldEventId = 12 and fldPosition = 3)
);
显然这只适用于字段fldWSCap。其他两个需要一个类似的陈述,其中fld * Cap根据fldPosition值改变。