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)
给您的两个建议,其中一个或两个都可能起作用,具体取决于您尝试存储的数据的详细信息:
看看 ENUM 或 SET 约束是否适合你;请注意,它们基于 SQL 模式(例如严格)提供不同级别的强制执行。查看更多信息:
http://dev.mysql.com/doc/refman/5.0/en/constraint-invalid-data.html
和/或
实施 INSERT、UPDATE 和 DELETE 触发器以控制对数据的访问(您可能希望在创建这些之前最初填充数据;同样,这取决于您的方案)
最简单的方法是创建一个只有一个合法值的列,然后声明它not null unique。
这会强制表不超过一行,但仍然允许零行。如果您需要防止删除唯一的行,请使用不同答案中给出的触发器方法。
create table example(
enforce_one_row enum('only') not null unique default 'only',
... your columns ....
);
Run Code Online (Sandbox Code Playgroud)