我有这张表,其中主键是一个无符号大整数作为 ID 的组合,然后是一个设置为 YYYY-MM-DD HH-MM-SS 的日期时间变量
我从以下评论中得到了这个想法: MySQL:使用 DATETIME 作为主键
我遇到的问题是,当我尝试插入一条 ID 相同但日期时间不同的新记录时,我收到一条错误消息,指出违反了重复 ID 的主键约束。
我的猜测是 MySQL 只比较日期时间数据类型的 YYYY-MM-DD 部分,因为它正在进行字符串比较,但我不确定......这只是我的理论。
我希望将日期时间用作主键一部分的人会有一些见识。
php 代码是正确的,因为显然正在创建第一条记录,但没有创建具有相同 ID 的第二条记录。
我试图不显示我的 SQL 代码,但在这里
CREATE TABLE userPosts(
postID SERIAL NOT NULL,
username varchar(21) NOT NULL,
time datetime NOT NULL,
text varchar(500),
type varchar(1) NOT NULL CHECK(type='t' OR type='f' OR type='u' OR type='b' OR type='c'),
-- visits integer NOT NULL DEFAULT 0,
CONSTRAINT FK_users_userPosts FOREIGN KEY(username) REFERENCES users(username) ON DELETE CASCADE,
CONSTRAINT PK_userPosts_username_postID_time PRIMARY KEY(postID,time)
);
我正在使用层次模型,该表将被描述为 ISA 表。
哇,我认为这是因为我将 ID 分配为我认为是唯一的 SERIAL 数据类型...我将不得不重新实现我的 php 以自动增加 ID 而不是数据库这样做。
我将重新实现我的代码并让你们发布。