首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MySQL表中创建引用日期的唯一键

问在MySQL表中创建引用日期的唯一键
EN

Stack Overflow用户
提问于 2010-07-13 17:55:10
回答 4查看 12.5K关注 0票数 7

关于在我的简单网页表单中防止重复输入的问题。

我的表格记录用户从web表单输入的内容,并按日期区分,例如DATE()。如何防止同名用户在同一日期内输入两次,例如同一用户名不能在同一日期内输入两次,但可以在其他日期输入?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-07-13 17:59:21

您的表应该包含以下内容:

代码语言:javascript
复制
create table tablename (
...
user_id bigint, -- or whatever
date_created date,
unique key(user_id, date_created)
...
);
票数 9
EN

Stack Overflow用户

发布于 2010-07-13 18:00:33

您可以简单地创建一个复合主键。对于您的情况,这意味着您的主键必须由日期字段和用户名字段组成。

票数 1
EN

Stack Overflow用户

发布于 2010-07-13 18:02:36

在几个方面。

首先,您可以在表上创建索引。(我使用简单的表作为示例)。

代码语言:javascript
复制
CREATE TABLE `test` (
`id` INT NOT NULL ,
`name` VARCHAR( 255 ) NOT NULL ,
`date` DATE NOT NULL ,
PRIMARY KEY ( `id` ) 
) ENGINE = MYISAM;

ALTER TABLE `test` ADD UNIQUE (
`name` ,
`date` 
);

这是MySQL的方式。

您还应该在PHP中进行检查,尽管您可以在插入时进行检查(MySQL将返回错误,您可以进行检查)。但您可以在插入之前进行额外的选择(SELECT * from test WHERE name=USER AND date=DATE)并检查记录数。如果大于0,则显示错误。

在保存时,您很少担心额外的一个SQL。如果需要,只需检查MySQL语句是否有错误(MySQL way :))。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3236012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档