我想创建一个包含操作的唯一PostgreSQL索引。有人知道这是否可能吗?
CREATE UNIQUE INDEX ux_data ON table (name, color)我要添加的操作是"num & new_num = 0",其中num是一个现有列,new_num是要插入的值。
这个是可能的吗?
更新:这里有关于我想要做的事情的更多细节。
数据库:
name color num
one red 5
two green 5
one red 8我要做的是防止条目不唯一的情况,例如:
新条目1: name = one,color = red,num = 1。
我们有匹配的名称和颜色,以及101 & 001 = 1中的第一个数字检查结果,这个新条目1并不是唯一的,但是如果数字被更改为2,则应该被拒绝。
新条目2: name = one,color = red,num =2
现在我们有了匹配的名字和颜色。对于所有名称/颜色中的num,都匹配101 & 010 =0和1000 & 0010 = 0,因此我们有一个唯一的条目。
发布于 2013-04-25 15:35:11
这将是一个一个半项目。似乎没有一种非常简单的方法可以做到这一点,但是有了PostgreSQL,任何事情都是可能的。我认为您需要使用GIST的排除约束。不幸的是,这种排除约束并不容易完成,因为没有支持这种约束的简单类型。
我认为您的基本解决方案必须包括:
这将不是一件容易的事,也会很复杂,但只要付出一些努力和奉献,这是可能的。我希望在此过程中将涉及到一到两百行代码。您可能也想编写单元测试。
https://stackoverflow.com/questions/16157227
复制相似问题