PRIMARY KEY (`id`) USING BTREE啥意思

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PRIMARY KEY (`id`) USING BTREE啥意思相关的知识,希望对你有一定的参考价值。

CREATE TABLE `hyc_hz_req` (
`id` varchar(36) NOT NULL COMMENT '主键',
`create_name` varchar(50) DEFAULT NULL COMMENT '创建人名称',
`create_by` varchar(50) DEFAULT NULL COMMENT '创建人登录名称',
`create_date` datetime DEFAULT NULL COMMENT '创建日期',
`update_name` varchar(50) DEFAULT NULL COMMENT '更新人名称',
`update_by` varchar(50) DEFAULT NULL COMMENT '更新人登录名称',
`update_date` datetime DEFAULT NULL COMMENT '更新日期',
`hz_apply_id` varchar(36) DEFAULT NULL COMMENT '会诊单ID',
`hz_hospital_id` varchar(36) DEFAULT NULL COMMENT '会诊方医院',
`hz_depart_id` varchar(36) DEFAULT NULL COMMENT '医院科室ID',
`hz_doctor_id` varchar(36) DEFAULT NULL COMMENT '会诊医生id',
PRIMARY KEY (`id`) USING BTREE,
KEY `FKD80EDF5E699FAA1D` (`hz_apply_id`) USING BTREE,
CONSTRAINT `hyc_hz_req_ibfk_1` FOREIGN KEY (`hz_apply_id`) REFERENCES `hyc_hz_apply` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
PRIMARY KEY (`id`) USING BTREE,
KEY `FKD80EDF5E699FAA1D` (`hz_apply_id`) USING BTREE,
CONSTRAINT `hyc_hz_req_ibfk_1` FOREIGN KEY (`hz_apply_id`) REFERENCES `hyc_hz_apply` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
最后面这几句什么意思哇

参考技术A PRIMARY KEY (`id`) USING BTREE,
指定id列为主键,使用B树作为索引。本回答被提问者和网友采纳

RoR:使用字符串 primary_key 创建对象(相关错误:找不到 ID=0 的 Object_Id)

【中文标题】RoR:使用字符串 primary_key 创建对象(相关错误:找不到 ID=0 的 Object_Id)【英文标题】:RoR: Creating an Object with string primary_key (associated error: Couldn't find Object_Id with ID=0) 【发布时间】:2010-10-21 11:58:48 【问题描述】:

我创建了一个具有字符串 primary_key 的模型。

Ruby on Rails 中的 Create 操作给了我以下错误:

找不到 ID=0 的主题

我的 Theme 表没有 ID 列,而是一个名为 name 的字符串列,它是主键。

在到处搜索之后,我在 theme_controller 中尝试了 Create 操作。

最初是:

定义创建 @theme = Theme.new(params[:theme]) respond_to 做 |格式| 如果@theme.save ……

:name 参数被正确传递,但未被使用,它被替换为我的模型没有的 ID。

解决方案是插入以下行来强制 RoR 将名称带入对象。

定义创建 @theme = Theme.new(params[:theme]) @theme.name = params[:theme][:name] respond_to 做 |格式| 如果@theme.save ……

【问题讨论】:

【参考方案1】:

您应该在 Theme 模型中设置主键。喜欢

set_primary_key :name

并在迁移中禁用 id,例如

create_table :themes, :id => false do |t|

请参阅http://roninonrails.blogspot.com/2008/06/using-non-standard-primary-keys-with.html 了解更多信息。如果 params[:theme] 具有与模型相同的属性,则不需要您使用的方法,因为 Theme.new(params[:theme]) 应该自动填充模型中的所有属性。不知道为什么它不能那样工作。

【讨论】:

今天在另一个项目中遇到了同样的问题。曾使用 set_primary_key 和 :id => false。结果是一样的,解决方法也是一样的。我没有测试您的链接,因为建议的解决方案要复杂得多。

以上是关于PRIMARY KEY (`id`) USING BTREE啥意思的主要内容,如果未能解决你的问题,请参考以下文章

[Err] 1062 - Duplicate entry '1' for key 'PRIMARY'

SQL PRIMARY KEY 约束

#1064 - SQL 语法错误。靠近第 4 行的 'json DEFAULT NULL PRIMARY KEY (`id`) ENGINE=INNODB'

违反 PRIMARY KEY 约束“[Table_id]”。使用实体框架时无法在对象“[Table_id]”中插入重复键

Django中的OnetoOne(primary_key = Tue)到ForeignKey

数据导入时违反 PRIMARY KEY 约束错误