I’m trying to find one record in the Meeting table that contains the same Modified_user_id, assigned_user_id, Name, date_start,date_end, created_by as the record that’s being saved. The new record should only be added if there isn’t already one in the meeting table.
When I run this, the record is added even if there are already matching records in the table.
What am I missing?
Thanks for your help.
ALTER PROCEDURE Add_Follow_up_From_Lead
@MODIFIED_USER_ID AS VARCHAR (250) = MODIFIED_USER_ID ,
@ASSIGNED_USER_ID AS VARCHAR (250) =MODIFIED_USER_ID,
@NAME nvarchar (50) = NAME,
@DATE_START AS VARCHAR (250) = DATE_START,
@DATE_END AS VARCHAR (250) = DATE_END,
@CREATED_BY AS VARCHAR (250) = CREATED_BY
AS
BEGIN
SET NOCOUNT ON;
IF NOT (EXISTS (select name from meetings where name = @name)
AND
EXISTS (SELECT DATE_START FROM MEETINGS WHERE DATE_START = @DATE_START)
AND
EXISTS (SELECT DATE_END FROM MEETINGS WHERE DATE_END = @DATE_END)
AND
EXISTS (SELECT CREATED_BY FROM MEETINGS WHERE CREATED_BY = @CREATED_BY))
insert into meetings(MODIFIED_USER_ID,ASSIGNED_USER_ID,NAME,
DATE_START ,DATE_END,CREATED_BY )
,TIME_START,STATUS,duration_hours,duration_minutes,REMINDER_TIME)
select top 1 l.modified_USER_ID,l.modified_USER_ID,first_name +' '+Last_name +' 'as NAME,FOLLOW_UP_DATE_C as Date_start,FOLLOW_UP_DATE_C as Date_end ,L.created_by
from leads_cstm lc
join leads l on l.id = lc.id_c where FOLLOW_UP_DATE_C >getdate()
order by l.date_modified Desc
END GO
Your IF condition isn’t checking for one row that has the same values as the new row. It will return true if either one of those values is present anywhere in the table. You are better off creating a unique key (Modified_user_id, assigned_user_id, Name, date_start,date_end, created_by) on the Meetings table, if it satisfies any other constraints that you may have. Then you can just run a simple insert query as