首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以自定义外键以使用正则表达式

问是否可以自定义外键以使用正则表达式
EN

Stack Overflow用户
提问于 2012-08-18 15:42:53
回答 1查看 213关注 0票数 1

我们有一个简单的商品和订单模型。

代码语言:javascript
复制
orders(url)
items(title, orders_count)

其中" URL“可以是来自web的任何URL,例如http://amzn.to/aCKiXO。我们想要做的是,如果用户输入“/item/7”作为"url“,那么它就像一个外键。所以就像这样:

代码语言:javascript
复制
class Order < ActiveRecord::Base
  belongs_to :item, :foreign_key => :url, :regex => /items/n, 
                    :counter_cache => true
end

class Item < ActiveRecord::Base
  has_many :orders, :foreign_key => :url, :regex => /items/n, 
                    :dependent => :destroy
end

这个是可能的吗?我们使用的是Rails 2.3.8、Ruby 1.9.3和Postgresql 9.1

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-18 16:05:15

不,不可能添加一个执行正则表达式匹配的foreign key constraint -或者除了简单的相等之外的任何东西。请参见PostgreSQL documentation on constraints。

您可以执行以下任一操作:

  • 在PL/PgSQL中编写constraint trigger以实施所需的约束条件;
  • 拆分出要在应用程序中使用正则表达式时添加约束条件的部分,并在仅包含该部分的列上定义外键约束条件;或者
  • 在插入行时使用BEFORE INSERT OR UPDATE ... FOR EACH ROW触发器在PL/PgSQL中拆分出感兴趣的部分,并将感兴趣的部分添加到仅包含该部分的外键列中。应用程序不需要知道复制,因为数据库会在幕后处理复制。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12016860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档