2011-09-11 22 views
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 
+0

どのDBエンジンですか? MySQL? SQLサーバー? – gbn

+0

gbn:私はそのSQL Serverを推測しています。 MySQLは '@'を使用していますか? – vol7ron

+0

複数の値を使用してIF条件を使用できないことを知りました。ありがとう! – Stan

答えて

1

あなたのIF条件は、新しい行と同じ値を持つ行をチェックされていません。これらの値のいずれかがテーブルのどこかに存在する場合、trueを返します。他の制約を満たしている場合、Meetingsテーブルで一意のキー(Modified_user_id、assigned_user_id、Name、date_start、date_end、created_by)を作成する方がよいでしょう。次に、あなただけのSQL Server

それは最初のチェックよりも、このエラーをできるように、簡単かつ安全ですについて

INSERT IF NOT EXISTS INTO Meetings VALUES(.....) 
0

ような単純なINSERTクエリを実行することができます。なぜあなたは変数を渡し、それらを使用していない

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

あるべきNAME, DATE_START, DATE_END, CREATED_BY上で一意制約/索引があると、エラーが発生しますか?

関連する問題