我正在尝试执行以下查询:
INSERT INTO table_timesheet (name, datein, dateout)
VALUES ('Rupert', 'NOW()', '')
WHERE NOT EXISTS (
SELECT name FROM table_listnames WHERE datein='NOW()'
);
但这会返回错误。
基本上我不想插入记录,如果' datein'记录的字段已经存在于另一条记录中 - 如何检查新的datein是否唯一?
我如何以相同的方式插入同一行上的日期,就像更新datein行一样?
答案 0 :(得分:3)
此INSERT查询将完全按照您的要求执行:
INSERT INTO table_timesheet (name, datein, dateout)
SELECT 'Rupert', NOW(), null
FROM DUAL
WHERE NOT EXISTS (
SELECT * FROM table_listnames WHERE datein=NOW()
);
请看here。但正确的解决方案是设置表约束。 table_timesheet
和table_listnames
如何相关?我会在datein列上使用唯一约束,但这取决于您的要求。
答案 1 :(得分:0)
首先检查此查询(使用MYSQLI或PDO)如果此查询返回false而不是插入记录
如果......这返回错误
SELECT name FROM table_listnames WHERE datein='NOW()'
FALSE
INSERT INTO table_timesheet (name, datein, dateout)VALUES ('Rupert', 'NOW()', '')