与MySQL和Postgres不同,SQLite不支持将外键约束添加到现有表中。因此,人们无法在ActiveRecord迁移中使用add_foreign_key
创建外键约束。
但是,从3.6.19开始,SQLite Issues with installing Express.JS in Windows 7包括CREATE TABLE语句中的外键约束,it does support在定义foreign_key: true
列时指定reference
在create_table
迁移中:
class CreateChildren < ActiveRecord::Migration
def change
create_table :children do |t|
t.text :name
t.references :parent, foreign_key: true
end
end
end
但是,当我查看生成的schema.rb
时,这似乎被忽略了:
create_table "children", force: :cascade do |t|
t.text "name"
t.integer "parent_id"
end
是否存在技术原因这是不可能的,还是仅仅缺少功能?有解决方法吗?