我需要做一个Web应用程序来收集来自不同服务的数据,并且我想限制每家商店每天仅通过sql中的php形式发布数据。
我尝试了不同的操作,但它们仍然重复或出现错误。
我的桌子看起来像这样:
$sql = "CREATE TABLE CA(
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
jour DateTime() NOT NULL,
shop VARCHAR(30) NOT NULL,
ca_done VARCHAR(30) NOT NULL,
objectif VARCHAR(70) NOT NULL ,
objectif_last_year VARCHAR(30) NOT NULL ,
comments VARCHAR(70) NOT NULL
)";
和我尝试过的插入内容类似
$sql = "INSERT INTO CA (jour,shop, ca_done, objectif, objectif_last_year, comments) VALUES ('$jour','$shop', '$ca_done', '$objectif', '$objectif_last_year', '$comments') "
;
我希望商店只能每天发布一次或更新其每日行而不创建重复项。
答案 0 :(得分:0)
将列添加到表insert_date
中,您将在其中存储插入日期。
然后在该表上创建插入触发器,您将在该表上检查特定商店当天是否已插入任何东西。基于此,您可以防止插入。
甚至更好的是,您可以在shop, insert_date
上创建唯一约束。
答案 1 :(得分:0)
如果您可以将jour
列更改为DATE
数据类型,则可以添加唯一索引:
ALTER TABLE CA ADD UNIQUE INDEX (jour, shop);
否则,如果您使用的是MySQL 5.7,则可以添加一个虚拟列,其中包含jour
列的日期部分,并将其用于索引中。
ALTER TABLE CA ADD COLUMN jourDate AS DATE(jour);
ALTER TABLE CA ADD UNIQUE INDEX (jourDate, shop);
答案 2 :(得分:-1)
谢谢!您的帮助。 所以我添加了insert_date列。 正如@Barmar建议的那样,我刚刚添加了:
CREATE UNIQUE INDEX uidx_pid ON ca (shop, insert_date)
它正在工作