Mar*_*ark 6 sql-server primary-key rails-migrations ruby-on-rails-3
在我想要创建的迁移中,表的主键是一个名为"id"的字段,但它不是一个自动递增的整数.它的数据类型应该是uniqueidentifier(一个uuid).这是我尝试过的:
create_table :some_things, :id => false do |t|
t.column :id, :uniqueidentifier, :primary => true
t.column :name, :string, :limit => 255
t.column :type, :tinyint
t.column :deleted_flag, :bit
t.column :class_id, :uniqueidentifier
t.timestamps
end
Run Code Online (Sandbox Code Playgroud)
这会创建表,但没有主键(因为我说:id => false).如果我说"create_table:some_things,:id => true,:primary =>:id",则"id"成为主键,但它是一个自动递增的整数,而不是非自动递增的uuid.
如何使此迁移工作,以便主键是一个名为"uniqueidentifier"类型的"id"字段(非自动递增)?
我正在使用:SQL Server 2008,Rails/ActiveRecord 3.0.3,activerecord-sqlserver-adapter gem和ODBC连接.
我不知道如何直接解决问题,但我有一个解决方法。
输入不带“primary”指令的迁移列 ID。在迁移中的“create_table”方法之后执行SQL的添加约束
execute "ALTER TABLE some_things ADD PRIMARY KEY (id);"
Run Code Online (Sandbox Code Playgroud)
(不要使用 MSSQL,并且可能会出现 SQL 语法错误)
在您的模型中通过添加定义主键
self.primary_key = "id"
Run Code Online (Sandbox Code Playgroud)
或者
set_primary_key :id
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1675 次 |
| 最近记录: |