<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های امیرمحمد فتح اللهی</title>
        <link>https://virgool.io/feed/@fatholahi00amir</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-10 16:41:14</pubDate>
        <image>
            <url>https://static.virgool.io/images/default-avatar.jpg</url>
            <title>امیرمحمد فتح اللهی</title>
            <link>https://virgool.io/@fatholahi00amir</link>
        </image>

                    <item>
                <title>دستور Merge در SQL Server</title>
                <link>https://virgool.io/@fatholahi00amir/%D8%AF%D8%B3%D8%AA%D9%88%D8%B1-merge-%D8%AF%D8%B1-sql-server-yky8i9vfikch</link>
                <description>مقدمهقصد داریم شما را با دستور (Merge) در SQL Server آشنا کنیم، این دستور از SQL2008 معرفی شده است. دستور (Merge) در SQL Server یک دستور قدرتمند است که به شما امکان می‌دهد عملیات درج، به‌روزرسانی یا حذف را بر روی جدول هدف بر اساس نتایج اتصال با جدول منبع انجام دهید.  در اینجا یک آموزش اولیه برای کمک به شما در درک نحوه استفاده از دستور (Merge) آورده شده است.مفاهیمعبارت«MERGE» اساساً داده‌ها را از دو منبع در یک هدف ادغام می‌کند.  این به ویژه در سناریوهایی مفید است که شما نیاز به همگام سازی دو جدول با درج،  به روز رسانی یا حذف رکوردها در یک جدول بر اساس تفاوت های موجود در جدول دیگر دارید.ساختار آن به شکل زیر می باشد :MERGE INTO target_table AS targetUSING source_table AS sourceON target.key_column = source.key_columnWHEN MATCHED     THEN UPDATE SET target.column1 = source.column1, ...WHEN NOT MATCHED BY TARGET     THEN INSERT (column1, column2, ...) VALUES (source.column1, source.column2, ...)WHEN NOT MATCHED BY SOURCE     THEN DELETE;اجزاTarget Table : جدولی که قرار است به روز شود.Source Table : جدولی که داده ها از آن بازیابی می شوند.ON Clause : شرط ادغام را تعریف می کند.  این معمولاً مطابق با کلید اصلی یا یک کلید منحصر به فرد است.When Matched : این بند اقدامی را مشخص می‌کند که وقتی ردیف‌های جداول هدف و منبع مطابقت دارند، انجام شود. به طور کلی، این شامل به روز رسانی سوابق موجود است.WHEN NOT MATCHED BY TARGET : این بند اقدامی را مشخص می کند که وقتی ردیف های جدول منبع مطابقت ندارند در جدول هدف انجام شود. اغلب برای درج رکوردهای جدید استفاده می شود.WHEN NOT MATCHED BY SOURCE : (اختیاری) این بند اقدامی را مشخص می کند که وقتی ردیف های جدول هدف در جدول منبع مطابقت ندارند، انجام شود. اغلب برای حذف سوابق استفاده می شود.مثالتصور کنید یک جدول «Products» به عنوان هدف و یک جدول «NewProducts» به عنوان منبع دارید. شما می خواهید که:· محصولات موجود را با جزئیات جدید به روز کنید.· محصولات جدیدی را که در جدول «Products» وجود ندارند اضافه کنید.· محصولاتی که دیگر در جدول «NewProducts» نیستند را حذف کنید.MERGE INTO Products AS PUSING NewProducts AS NPON P.ProductID = NP.ProductIDWHEN MATCHED     THEN UPDATE SET P.Name = NP.Name, P.Price = NP.PriceWHEN NOT MATCHED BY TARGET     THEN INSERT (ProductID, Name, Price) VALUES (NP.ProductID, NP.Name, NP.Price)WHEN NOT MATCHED BY SOURCE     THEN DELETE;تذکر- از transaction control برای اطمینان از یکپارچگی داده ها استفاده کنید.- در مورد «WHEN NOT MATCHED BY SOURCE THEN DELETE» احتیاط کنید زیرا می تواند ردیف ها را ناخواسته حذف کند.- ابتدا عبارت «MERGE» خود را با عبارت «SELECT» آزمایش کنید تا متوجه شوید چه تغییراتی ایجاد خواهد شد.نتیجه گیریعبارت «MERGE» یک ابزار همه کاره در SQL Server برای مدیریت کارآمد داده های جدول است.  این به ویژه برای فرآیندهای ETL، انبار داده ها، و همگام سازی داده ها بین جداول مفید است.  با این حال، به دلیل پتانسیل آن برای ایجاد تغییرات قابل توجه در داده ها، استفاده دقیق از آن،  به ویژه در محیط های تولید، مهم است.</description>
                <category>امیرمحمد فتح اللهی</category>
                <author>امیرمحمد فتح اللهی</author>
                <pubDate>Wed, 10 Jan 2024 12:03:58 +0330</pubDate>
            </item>
            </channel>
</rss>