Primary key MariaDB主键与唯一键
从某种意义上说,这个问题源于。MariaDB documnetation中的一条禁令表明,在集群数据库上拥有没有主键的表是不可取的。在我的应用程序中,我通常在没有主键的情况下为每个表使用一个唯一键(VARCHAR(8))。我的理解是主键只是一种特殊的唯一键。问题-当前唯一的密钥用法是否足以让MariaDB Galera开心,或者我是否明确需要将我的UNIQUE转换为Primary?从表面上看,这对我来说没有多大意义,但也许有这样做的原因?在缺少Primary key MariaDB主键与唯一键,primary-key,mariadb,Primary Key,Mariadb,从某种意义上说,这个问题源于。MariaDB documnetation中的一条禁令表明,在集群数据库上拥有没有主键的表是不可取的。在我的应用程序中,我通常在没有主键的情况下为每个表使用一个唯一键(VARCHAR(8))。我的理解是主键只是一种特殊的唯一键。问题-当前唯一的密钥用法是否足以让MariaDB Galera开心,或者我是否明确需要将我的UNIQUE转换为Primary?从表面上看,这对我来说没有多大意义,但也许有这样做的原因?在缺少主键的情况下,InnoDB/XtraDB将首先尝试使
主键的情况下,InnoDB/XtraDB将首先尝试使用唯一的
索引。如果两者都不存在,它将构成galera节点之间不可靠的内部主键
您认为主
键基本上是一个唯一的
索引是正确的,唯一的区别是只能有一个主
键。它还用于数据的物理布局,但这在这里并不重要
只要只有一个UNIQUE
索引,就可以了。但是,如果您添加另一个UNIQUE
索引,我认为这是不可靠的。因此,为了获得良好的实践效果,您可能应该使唯一
索引主键。主键要求列不为空
在表中创建表p(a INT,b INT,UNIQUE(a))代码>可以有2行,其中a为空
在表中创建表p2(a INT,b INT,主键(a))代码>a列自动变为非空列
SHOW CREATE TABLE p2;
CREATE TABLE `p2` (
`a` int(11) NOT NULL DEFAULT '0',
`b` int(11) DEFAULT NULL,
PRIMARY KEY (`a`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1