我有两张桌子
class CreateMasterUrls < ActiveRecord::Migration
def change
\create_table :master_urls do |t|
t.string :url
t.string :host
t.timestamps
end
add_index :master_urls, [:url], :name => :idx_url
add_index :master_urls, [:host], :name => :idx_host
end
end
和
class CreateUrlLists < ActiveRecord::Migration
def change
create_table :url_lists do |t|
t.string :url
t.integer :project_id
t.timestamps
end
end
end
我想检查url_lists表中的URL是否存在于master_urls中,如果不是,则将其添加到master_urls表中。有任何线索怎么做?
一种方法是进行正则表达式匹配。但它没有效率,也没有解决问题。
答案 0 :(得分:0)
我首先尝试沿着这些(SQL)行。 。
insert into master_urls (url)
select ul.url
from url_list ul
where ul.url not in (select url from master_urls);
这不是最有效的方法,但它很容易理解。
但这不是你的真正的问题。
如果要求url_list中的所有url必须始终位于master_urls中,那么您需要使用dbms来确保发生这种情况。根据您的应用程序,您可能需要外键约束,触发器或应用程序代码中的重大更改。