درج چند رکورد در یک جدول

درج چند رکورد در یک جدول

نوشته شده توسط: مسعود طاهری
تاریخ انتشار: ۱۷ فروردین ۱۳۹۴
آخرین بروزرسانی: ۲۳ آبان ۱۴۰۲
زمان مطالعه: 8 دقیقه
۵
(۲)

مقدمه

یکی از قابلیت‌هایی که در SQL Server وجود دارد درج همزمان چند رکورد در بانک اطلاعاتی می‌باشد. برای اینکه این کار را بتوانیم در SQL Server انجام دهیم یک بانک اطلاعاتی و جدول تستی با استفاده از Scriptهای زیر ایجاد نمایید.
USE master
GO
IF DB_ID('TestDB')>0
BEGIN
ALTER DATABASE TestDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DROP DATABASE TestDB
END
GO
CREATE DATABASE TestDB
GO
USE TestDB
GO
CREATE TABLE MyTable
(
,Col1 INT PRIMARY KEY
Col2 NVARCHAR(20)
)
در ادامه اسکریپت‌های زیر نحوه درج چندین رکورد در یک جدول را به طور همزمان نشان می‌دهد.
دوره کوئری نویسی نیک آموز

استفاده از چندین دستور Insert

در این روش به ازای درج هر رکورد در جدول یک دستور Insert نوشته می‌شود. این روش یکی از ساده‌ترین روش‌ها جهت درج چندین رکورد در بانک اطلاعاتی می‌باشد.
INSERT INTO MyTable (Col1,Col2)
VALUES (1,'S1-1')
INSERT INTO MyTable (Col1,Col2)
VALUES (2,'S1-2')
INSERT INTO MyTable (Col1,Col2)
VALUES (3,'S1-3')
INSERT INTO MyTable (Col1,Col2)
VALUES (4,'S1-4')
GO

استفاده از Union

در این روش رکوردهایی که قرار است در جدول درج شوند با استفاده از چندین Union به همدیگر پیوند داده می‌شوند.
INSERT INTO MyTable
SELECT 5,'S2-1'
UNION
SELECT 6,'S2-2'
UNION
SELECT 7,'S2-3'
UNION
SELECT 8,'S2-4'
GO

اما اگر دقت کنید توسط دستور بالا هر ۴ رکورد به یکباره در جدول درج شده است.

استفاده از Row Constructor 

این روش از SQL Server 2008 به بعد در سیستم قابل اجرا می‌باشد. در این حالت با استفاده از یک دستور Insert امکان درج همزمان چندین رکورد وجود خواهد داشت.
INSERT INTO MyTable VALUES
(۹, 'S3-1'),
(۱۰,'S3-2'),
(۱۱,'S3-3'),
(۱۲,'S3-4'),
GO
نحوه درج اطلاعات توسط این روش همانند روش Union بوده و رکوردها به یک‌بار در جدول درج می‌شوند.

چند نکته درباره استفاده از Row Constructor

  • کارایی این روش نسبت به روش‌های دیگر بالاتر می‌باشد.
  •  چنانچه یکی از رکوردهای موجود در مجموعه دارای خطا باشد. با استفاده از این دستور چیزی در جدول درج نخواهد شد.

چه رتبه ای می‌دهید؟

میانگین ۵ / ۵. از مجموع ۲

اولین نفر باش

title sign
دانلود مقاله
درج چند رکورد در یک جدول
فرمت PDF
2 صفحه
حجم 1 مگابایت
دانلود مقاله
title sign
معرفی نویسنده
مسعود طاهری
مقالات
20 مقاله توسط این نویسنده
محصولات
65 دوره توسط این نویسنده
مسعود طاهری

مسعود طاهری مدرس و مشاور ارشد SQL Server & BI ،  مدیر فنی پروژه‌های هوش تجاری (بیمه سامان، اوقاف، جین وست، هلدینگ ماهان و...) ، مدرس دوره‌هــای SQL Server و هوش‌تجاری در شرکت نیک‌آموز و نویسنده کتاب PolyBase در SQL Server

title sign
دیدگاه کاربران

    •  ممنون بدرد بخور بود.

    •     جناب کبیری ظاهرا دستور از لحاظ Syntax اوکی است خطای شما چیه 

      می توانید متن خطا را درج کنید
    •    سلام.من چندین رکورد دارم که میخوام با استفاده از روش ۱ در دیتابیس درج کنم.داخل چند تا از فیلد ها  اطلاعات فارسی قرار داره.وقتی دونه دونه داخل query اجرا میکنم انجام میشه ولی وقتی از یک insert بیشتر میشه خطا میده و انجام نمیشه.میخواستم بپرسم علتش چیه؟به خاطره راستچین چپ چین حروف فارسی انگلیسیه؟؟؟.ممنون

      •     سلام در نحوه نوشتن دستورات دقت کنید نباید مشکلی در این مورد داشته باشید

        •    این یک نمونه از چند دستور insert هستش که نمیشه همه رو با هم وارد کرد
          INSERT INTO DD (RECORD, OrgCode, BCODE, PNAME, PNO, KCODE, KCODE9, AMVAL, KNAME, NJA, SH_BARG, B_DATE, TEDAD, VAZ, PAGE, ROW, VAHED, SNO, M_HAZINE)VALUES (NULL,NULL,’35265′,’نفر’,NULL,NULL,’35-001-0147′,NULL,’میکرومترسه فک داخل سنج۱۷۵-۱۵۰دقت ۰.۰۰۵′,۱,NULL,’91/01/04′,1,NULL,NULL,NULL,’عدد’,NULL,NULL);
          INSERT INTO DD (RECORD, OrgCode, BCODE, PNAME, PNO, KCODE, KCODE9, AMVAL, KNAME, NJA, SH_BARG, B_DATE, TEDAD, VAZ, PAGE, ROW, VAHED, SNO, M_HAZINE)VALUES (NULL,NULL,’35265′,’نفر’,NULL,NULL,’35-001-0148′,NULL,’میکرومترکمانی دیجتال۲۵-۰ دقت ۰.۰۰۱′,۱,NULL,’91/01/04′,2,NULL,NULL,NULL,’عدد’,NULL,NULL);
          INSERT INTO DD (RECORD, OrgCode, BCODE, PNAME, PNO, KCODE, KCODE9, AMVAL, KNAME, NJA, SH_BARG, B_DATE, TEDAD, VAZ, PAGE, ROW, VAHED, SNO, M_HAZINE)VALUES (NULL,NULL,’35265′,’نفر’,NULL,NULL,’35-001-0154′,NULL,’میکرومترسه فک داخل سنج۱۰۰-۷۵ دقت ۰.۰۰۵′,۱,NULL,’91/01/04′,1,NULL,NULL,NULL,’عدد’,NULL,NULL);
          INSERT INTO DD (RECORD, OrgCode, BCODE, PNAME, PNO, KCODE, KCODE9, AMVAL, KNAME, NJA, SH_BARG, B_DATE, TEDAD, VAZ, PAGE, ROW, VAHED, SNO, M_HAZINE)VALUES (NULL,NULL,’35265′,’نفر’,NULL,NULL,’35-001-0155′,NULL,’میکرومترسه فک داخل سنج کف ت۱۲۵-۱۰۰دقت ۰.۰۰۵′,۱,NULL,’91/01/04′,1,NULL,NULL,NULL,’عدد’,NULL,NULL);
          INSERT INTO DD (RECORD, OrgCode, BCODE, PNAME, PNO, KCODE, KCODE9, AMVAL, KNAME, NJA, SH_BARG, B_DATE, TEDAD, VAZ, PAGE, ROW, VAHED, SNO, M_HAZINE)VALUES (NULL,NULL,’35265′,’نفر’,NULL,NULL,’35-001-0157′,NULL,’میکرومترسه فک داخل سنج۴-۳.۵ دقت ۰.۰۰۱′,۱,NULL,’91/01/04′,1,NULL,NULL,NULL,’عدد’,NULL,NULL);
          INSERT INTO DD (RECORD, OrgCode, BCODE, PNAME, PNO, KCODE, KCODE9, AMVAL, KNAME, NJA, SH_BARG, B_DATE, TEDAD, VAZ, PAGE, ROW, VAHED, SNO, M_HAZINE)VALUES (NULL,NULL,’35265′,’نفر’,NULL,NULL,’35-001-0169′,NULL,’میکرومترسه فک داخل سنج۴.۵-۴ دقت ۰.۰۰۱′,۱,NULL,’91/01/04′,1,NULL,NULL,NULL,’عدد’,NULL,NULL);

        •    راستش دستورات insert همگی به صورت سیستمی ایجاد شده و همونطور که گفتم هرکدوم به تنهایی اجرا میشن و رکورد جدید رو درج می کنن ولی وقتی چندتا رو با هم داخل query مینویسم اجرا نمیشن

    • سلام
      اگر امکانی قرار بدهید که هر کاربر بتوانند مقالات مورد علاقه خودش را در پنل کاربری خوش ذخیره بکند تا برای مراجعه بعدی به لیست مقالات مراجعه نکند بلکه به لیست مقالات مورد علاقه در پنل کاربری خودش مراجعه کند
      در ضمن بتواند مقالات مورد علاقه خوش را دسته بندی کند

      با تشکر

    •  با سلام و احترام 

      جناب مهندس طاهری اگه امکانی در سایت قرار بدهید که مقالات رو بتوان به صورت PDF دانلود کرد بسیار عالی میشه، این یه پیشنهاده 
      امیدوارم مورد استقبال قرار بگیره.
      با تشکر 
    • تا جایی که میدونم sqllite این اجازه رو نمیده
      واسه اون یه ترفندی یا… هست؟

    •  سلام

      لطفاً در این سایت جدید امکان دریافت مقالات بصورت PDF رو هم لحاظ کنید.
      با تشکر.
    • سلام
      این دستور برای ثبت زیر اقلام یک فاکتور مناسب هست؟
      اگر در این دستور خطایی رخ بدهد امکان اینکه از کدام یک از دستورات insert بوده وجود دارد؟
      تشکر

  • 1
  • 2