检查插入值
问题描述:
我有这三个表。检查插入值
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过程(如果我真的愿意在数据库级执行此检查,这将是我的选择)。