2010-04-05 76 views
1

我有這三個表。檢查插入值

Table: Item 
Columns: ItemID, Title, Content, NoChange (Date) 

Table: Tag 
Columns: TagID, Title 

Table: ItemTag 
Columns: ItemID, TagID 

在項目表是與NOCHANGE一個字段,如果該字段=真沒有標籤允許插入與此的ItemID一個ItemTag值。我如何檢查插入?

對於更新,我有這樣的說法:

UPDATE ItemTag SET TagID = ? where ItemID = ? 
AND TagID = ? AND exists (
select ItemID from Item where ItemID = ? AND NoChange is null)"); 

謝謝。

回答

0

您可以使用INSERT語句的查詢語法:

INSERT INTO ItemTag(標籤識別,項ID)選擇,? FROM itemid itemid =?和nochange爲空

其中第一個參數是您的tagid和第二個和第三個您的itemid。

0

insert語句does not accept conditions

INSERT INTO table [ (column [, ...]) ] 
    { DEFAULT VALUES | VALUES ({ expression | DEFAULT } [, ...]) [, ...] | query } 
    [ RETURNING * | output_expression [ AS output_name ] [, ...] ] 

你可以做的是添加一個觸發器來檢查的條件已經得到滿足,要麼回滾事務或跳過插入(the trigger should return null)。

你也可以編寫一個相對簡單的plpgsql過程(如果我真的願意在數據庫級執行此檢查,這將是我的選擇)。