# پایگاه‌های داده > SQL Server > T-SQL >  چک کردن عدم تکراری بودن رکورد، قبل از ثبت(در دستور درج گروهی)

## Nima_kyan

سلام
من یه دستورت درج گروهی دارم که قبل ثبت با یه محاسبات خاصی یه سری رکورد رو از جدول های مختلف میکشه بیرون و تو یه جدول مجازی (Result#) میریزه و حالا میخوام محتویات این جدول مجازی رو رکورد به رکورد تو یه جدول دیگه درج کنم(*در صورتی که این رکوردها تکراری نباشن ثبت بشن*)از همچین دستوری استفاده کردم:
insert into Table1 (field1,field2,field3)
     select field1,field2,field3 from #Result
 که کار درج رو بدون مشکل انجام میده* ولی میخوام قبل درج هر رکورد تست کنم در صورت تکراری نبودنش درج بشه*. ولی چطور نمیدونم؟؟؟؟؟(فرض کنیم که فیلد کلید Field1 باشه)
ممنون میشم کمک کنید

----------


## hossein_h62

سلام
insert into Table1 (field1,field2,field3)
     select field1,field2,field3 from #Result
    Where field1 Not IN (Select filed1 From Table1)

----------


## Nima_kyan

ممنون.
 و اگه کلیدمون ترکیبی باشه چطور؟
مثلا فیلدهای Field1 و Field2

----------


## hossein_h62

> ممنون.
>  و اگه کلیدمون ترکیبی باشه چطور؟
> مثلا فیلدهای Field1 و Field2


 ... AND ...

----------


## samani

> ممنون.
>  و اگه کلیدمون ترکیبی باشه چطور؟
> مثلا فیلدهای Field1 و Field2


INSERT INTO Table1 (field1,field2,field3)
SELECT field1,field2,field3 FROM #Result
WHERE CAST(field1 AS VARCHAR(50)) + '_' + CAST(field2 AS VARCHAR(50)) NOT IN (SELECT CAST(field1 AS VARCHAR(50)) + '_' + CAST(field2 AS VARCHAR(50)) FROM Table1)

----------


## محمد سلیم آبادی

*نکته*
در برابر یک سیستم مدیریت بانک اطلاعاتی رابطه ای چون SQL Server جایز نیست که از اصطلاح فیلد به جای ستون و رکورد به جای سطر استفاده کنید به این پست مراجعه کنید:
http://puresql.blogsky.com/1391/12/05/post-1/
*
راه حل با در نظر گرفتن کلید ترکیبی:*
insert into Table1(column1, column2, column3)
select column1, column2, column3
from #result t
where not exists 
             (select *
               from  Table1
               where column1 = t.column1
                     and column2 = t.column2);

----------

