0

保存されているレコードと同じModified_user_id、assigned_user_id、Name、date_start、date_end、created_byを含む1つのレコードを会議テーブルで見つけようとしています。新しいレコードは、会議テーブルにまだレコードがない場合にのみ追加する必要があります。

これを実行すると、テーブルに一致するレコードがすでに存在する場合でも、レコードが追加されます。

私は何が欠けていますか?

ご協力いただきありがとうございます。

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
4

3 に答える 3

1
If not exists(select name from meetings where(name=@name)and(date_start=@date_start)and....etc)
Begin
  Insert into meetings(...)values(....)
End
于 2011-09-11T21:03:59.150 に答える
1

IF条件は、新しい行と同じ値を持つ1つの行をチェックしていません。これらの値のいずれかがテーブルのどこかに存在する場合、trueを返します。他の制約を満たしている場合は、Meetingsテーブルに一意のキー(Modified_user_id、assigned_user_id、Name、date_start、date_end、created_by)を作成することをお勧めします。次に、次のように単純な挿入クエリを実行できます。

INSERT IF NOT EXISTS INTO Meetings VALUES(.....)
于 2011-09-11T20:47:11.853 に答える
0

SQLServerの場合

最初にチェックするよりも、このエラーを発生させる方が簡単で安全です。エラーは、存在する必要のある一意の制約/インデックスがある場合に発生NAME, DATE_START, DATE_END, CREATED_BYます

BEGIN TRY
   INSERT etc
END TRY
BEGIN CATCH
    IF ERROR_NUMBER() <> 2627
      RAISERROR etc
END CATCH

なぜ変数を渡して使用しないのですか?

于 2011-09-12T04:56:06.180 に答える