我有一个像这样的插入语句
INSERT INTO T_WorkContents ( user_id, working_date, working_start_time,
working_end_time, break_time, holiday_mark,
overtime_hours, overtime_reason, work_detail,
remarks, regist_user, regist_date,
update_user, update_date )
VALUES ( '00005', '2015-02-05', '8:0',
'17:0', '0:0', '0',
'0:0', NULL, NULL,
NULL, '00005', current_timestamp(),
'00005', current_timestamp()
);
我想通过将表workcontent与user_id
上的表用户信息相加并且条件为where userinfo.delete_flag = 0
来插入新行时检查用户是否已被删除。
有什么办法吗?
答案 0 :(得分:0)
您可以使用WHERE EXISTS。请尝试以下
INSERT INTO funds (field1, field2)
values (x, xx)
WHERE EXISTS (
SELECT *
FROM table
WHERE userid = your_user_id
);
答案 1 :(得分:0)
我不确定我理解你的问题。但是,如果您只想在相应的用户存在且仅在其他表中标记为未删除的情况下执行插入,则此操作应该有效:
INSERT INTO T_WorkContents ( user_id, working_date, working_start_time,
working_end_time, break_time, holiday_mark,
overtime_hours, overtime_reason, work_detail,
remarks, regist_user, regist_date,
update_user, update_date )
SELECT '00005', '2015-02-05', '8:0',
'17:0', '0:0', '0',
'0:0', NULL, NULL,
NULL, '00005', current_timestamp(),
'00005', current_timestamp()
FROM userinfo ui
WHERE ui.user_id = '00005' && ui.delete_flag = 0
如果userinfo
没有包含user_id
等于00005
且delete_flag
设置为0的行,那么select将返回no行和插入查询将不会影响任何行。