如何确保数据库表中只有一行?

ben*_*ail 6 mysql database privileges database-design

我想确保名为"myTable"的MySQL表只有一行.

所以我需要能够在这一行上做更新,但显然插入和删除应该是不可能的.

我问这个问题是因为Stack Overflow的回答

谢谢!

小智 9

CREATE TABLE `myTable` (
  `id` enum('1') NOT NULL,
  `MyValue1` int(6) DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='The ENUM(''1'') construct as primary key is used to prevent that more than one row can be entered to the table';
Run Code Online (Sandbox Code Playgroud)

  • 虽然这可能是一个很好的答案,但请考虑添加一些更多解释,说明为什么这是正确的解决方案以及您到底在做什么:) (3认同)

kvi*_*sta 5

给您的两个建议,其中一个或两个都可能起作用,具体取决于您尝试存储的数据的详细信息:

和/或


Joh*_*and 5

最简单的方法是创建一个只有一个合法值的列,然后声明它not null unique

这会强制表不超过一行,但仍然允许零行。如果您需要防止删除唯一的行,请使用不同答案中给出的触发器方法。

create table example( 
    enforce_one_row enum('only') not null unique default 'only',
    ... your columns ....
);
Run Code Online (Sandbox Code Playgroud)