نمایش نتایج 1 تا 8 از 8

نام تاپیک: دو سوال در مورد دستور Insert ...

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1382
    محل زندگی
    ایران - تبریز
    سن
    50
    پست
    61

    دو سوال در مورد دستور Insert ...

    سلام
    دوستان خسته نباشید

    1) چگونه میتوان همزمان با یک Query به دو جدول با دستور Insert اطلاعات وارد
    کرد ؟

    2) چگونه میتوان با یک Query یک رکورد به یک جدول اضافه کرد بطوری که رکورد تکراری درج نشود مثلا :
    Insert Into TableName (FieldList) Values (ValuesList) Where FieldKey not in (Select FieldKey From TableName)

    البته من Query بالا را پیاده سازی کردم اما Sql Server خطا میده . :o

    قبلا از همکاریتان کمال تشکر را دارم :)

  2. #2
    1) نمی توان انجام داد
    2)‌ قبل از این دستور باید وجود رکورد را چک کنید . در واقع دستور Where ... Select باید قبل از Insert اجرا شود

  3. #3
    دوست عزیزم،
    برای جلوگیری از ورود مقدار تکراری، چرا از Unique Constraint استفاده نمیکنید تا خود SQL Server جلوی ورود اونرو بگیره؟

  4. #4
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1382
    محل زندگی
    ایران - تبریز
    سن
    50
    پست
    61
    سلام

    ممنون از راهنمایی شما

    دوست گرامی ما فیلد کلیدی را Unique Constraint قرار دادیم اما نمیخواهیم که در چنین مواقع پیغام Sqlserver را به کاربر نشان دهیم . باید قبل از اینکه تو سرور یک خطا پیش بیاد باید وجود رکورد تکراری را بدانیم .

    باز از راهنمایی شما کمال تشکر را دارم . :)

  5. #5
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1382
    محل زندگی
    ایران - تبریز
    سن
    50
    پست
    61
    سلام
    در صورت امکان به سوال اول هم یک راه حلی پیشنهاد کنید :o

  6. #6
    دوست عزیزم،
    من دقیقا نمیدونم به چه صورت این اطلاعات وارد جدول میشن. مثلا آیا بعد از عمل Insert، کاربر باید در جریان موفقیت یا عدم موفقیتش قرار بگیره؟ یا اینکه عمل Insert یکی از کارهای Background شماست و به یوزر کاری نداره. ولی علت اینکه من استفاده از Unique Constraint رو پیشنهاد کردم این بود که اگر شما به طور دستی وجود Value رو بخواید کنترل کنید، در حقیقت یک Query اضافی داره انجام میشه. ولی
    Unique Constraint این عمل اضافی رو نداره.
    ضمنا خطایی که در اثر مغایرت Insert با Unique Constraint ایجاد میشه، در هر زبان برنامه نویسی قابل کنترله و الزاما نباید به یوزر نمایش داده بشه.
    ولی به هر حال باز اگر صلاح در اینه که دستی کنترل کنین، این کار امکان پذیره:


    IF NOT EXISTS
    (SELECT FieldKey FROM TableName WHERE FieldKey=FieldValue)

    INSERT TableName(FieldList) VALUES(ValuesList)


    در مورد سوال اول، راه استانداردی وجود نداره ولی شما میتونین روی جدول اولی یک Trigger بنویسید که موقع Insert، مقادیر رو به جدول دوم هم وارد کنه. به این شکل شما Insert رو روی یک جدول انجام میدین، ولی در دو جدول وارد میشه.
    موفق باشین

  7. #7
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1382
    محل زندگی
    ایران - تبریز
    سن
    50
    پست
    61
    خسته نباشی دوست عزیز

    پاسخ شما کاملا درسته . اما اطلاعاتی که ما در دو جدول وارد میکنیم یکی نیستند
    (امکان داره فقط در یک یا دو فیلد مشترک باشند) پس نمیتوانیم با Trigger این امر رو پیاده سازی کنیم .

    باز ممنون از لطف شما :o

  8. #8
    دوست عزیز،
    زمانیکه دو جدول شما اینقدر با هم متفاوت هستن، چطور انتظار دارین SQL Server بتونه با یک دستور Insert به 2 جدول کاملا متفاوت مقادیر رو وارد کنه :?:
    تصور من این بود که دو جدول شما کاملا ساختار یکسان دارند که این سوال رو میپرسید!

تاپیک های مشابه

  1. دکمه next , insert و ...
    نوشته شده توسط ITST-1 در بخش برنامه نویسی در 6 VB
    پاسخ: 1
    آخرین پست: یک شنبه 04 آذر 1386, 16:12 عصر
  2. مشکل دستور Insert into در VB.net
    نوشته شده توسط alineghabi در بخش VB.NET
    پاسخ: 8
    آخرین پست: یک شنبه 01 بهمن 1385, 11:25 صبح
  3. کمک فوری : خطا در هنگام ورود اطلاعات به بانک با دستور insert
    نوشته شده توسط mohsen_borzooei در بخش کامپوننت های سایر شرکت ها، و توسعه کامپوننت
    پاسخ: 3
    آخرین پست: شنبه 06 آبان 1385, 09:03 صبح
  4. insert کردن در پایگاه داده با php
    نوشته شده توسط arash ahmadi در بخش PHP
    پاسخ: 4
    آخرین پست: جمعه 24 شهریور 1385, 00:42 صبح

قوانین ایجاد تاپیک در تالار

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