检查插入值

问题描述:

我有这三个表。检查插入值

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

谢谢。

您可以使用INSERT语句的查询语法:

INSERT INTO ItemTag(标签识别,项ID)选择,? FROM itemid itemid =?和nochange为空

其中第一个参数是您的tagid和第二个和第三个您的itemid。

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过程(如果我真的愿意在数据库级执行此检查,这将是我的选择)。