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

نام تاپیک: مشکل با Script

  1. #1

    Tick مشکل با Script

    سلام دوستان.من در یک Script کد زیر رو نوشتم ولی دائم پیغام میده که فیلد مورد نظرت وجود نداره.دقیقا عین همین دستور رو بالاتر برای یک جدول دیگه نوشتم و اونهم فیلدها مربوطه وجود نداره ولی درست کار میکنه و فیلدها رو ایجاد میکنه.

    If Not Exists(select syscolumns.name from syscolumns inner join sysobjects on syscolumns.id=sysobjects.id where
    sysobjects.name='u_secret' and syscolumns.name='fpno')
    Begin
    alter table u_secret
    add [fpNo] [SmallInt] NULL
    alter table u_secret
    Add [FpSharh] [Bit] NULL
    ALTER TABLE [dbo].[u_secret] ADD
    CONSTRAINT [DF_U_secret_FpNo] DEFAULT (-1) FOR [Fpno],
    CONSTRAINT [DF_U_Secret_FpSharh] DEFAULT (-1) FOR [FpSharh]
    Update u_secret set FpNo=-1,FpSharh=-1
    End
    Go


  2. #2

    مشکل script

    با سلام
    اول از همه بگم که من دلیل منطقی برا این روش تو SQL ندارم ولی خوب جواب می ده
    دستور شما کاملا درسته ولی اگر فیلدی رو اولین بار به یک جدول اضافه کنید بلافاصله قابل بروزرسانی نیست یعنی اگر الان خط مربوط به Update رو بر داری و اجرا کنی فیلدها اضافه می شه و بعد می تونی دستور Update رو اجرا کنی ولی نکته جالبترش اینجاست حالا اگر بری این دو تا فیلدی که اضافه کردی رو حذف کنی و از دوباره کل دستور رو یعنی همراه با Update اجرا کنی این دفعه عمل می کنه البته من بی تقصیرم

    موفق باشید

  3. #3
    سلام

    1. افزودن فیلدها و update در یک بچ انجام شده (بین افزودن فیلد و update دستور GO نیست و با توجه به منطق کد قاعدتا نمیشه اونجا GO گذاشت) این میتونه باعث شه که پارسر که دستورات را قبل از اجرا چک هم میکنه اشکال بگیره - دلیل اینکه در مثال mehdi خطا نمیگیره هم میتونه همین باشه (از دید پارسر فیلدهای حذف شده هنوز هستند).

    2. اما وقتی یک فیلد جدید با default تعریف میکنید، عملا مقدار اون فیلد در تمام رکوردهای موجود تعیین میشه و دیگه اصولا نیازی به update نخواهید داشت. پس به صورت یک نکته جنبی، حتی میشه که اون update هم وجود نداشته باشد...

    ارادت

  4. #4
    ممنون.خوب درسته که من Default تعریف میکنم ولی میخوام در این فیلدها مقدار null نباشه.به همین خاطر اونو دارم update میکنم.ولی جالب اینه که در داخل این Script که نوشتم سه یا چهار مورد به همین صورت فیلد اضافه کردم و بلافاصله این دستور رو اجرا کردم و مشکلی نداشتم.حالا سر این یکی وقتی اجرا میشه ایراد میگیره.

  5. #5
    من فکر می کنم استفاده از GO بین هر یک از دستورات مشکلت رو حل کنه چون شما در یک قسمت alter , از update هم استفاده کردی

  6. #6
    ممنون.ولی شما در داخل یک batch نمیتونی از go استفاده کنی بهت خطا میده

  7. #7
    نقل قول نوشته شده توسط حمیدرضاصادقیان مشاهده تاپیک
    خوب درسته که من Default تعریف میکنم ولی میخوام در این فیلدها مقدار null نباشه.به همین خاطر اونو دارم update میکنم.
    سلام

    نکته همینجاست دیگه، وقتی برای یک فیلد جدید default تعریف کنی اون مقدار در تمام رکوردهای موجود درج میشه و نیازی به update نیست.

    بعدا اضافه کردم: باز هم عذرخواهی... مثل اینکه قراره من هر پستی که برای شما مینویسم یک اشتباه توش باشه: اون چیزی که من گفتم فقط وقتی که فیلد Nullable نباشه اتفاق میافته...

    ارادت
    آخرین ویرایش به وسیله JAFO_IRAN : شنبه 01 دی 1386 در 17:21 عصر دلیل: اشتباه از من بود

  8. #8
    شما میتونی همین رو تست کنی.من تست کردم یک همچین اتفاقی نیافتاد.البته این مشکل حل شد.
    من بعد از اینکه فیل رو به جدول اضافه کردم با یک شرط مقدار Null را در اون فیلد تست کردم و اگر null بود مقدار آنرا بروز رسانی میکنم.

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

  1. میل زدن اطلاعات فرم با Script
    نوشته شده توسط soliazad در بخش طراحی وب (Web Design)
    پاسخ: 0
    آخرین پست: چهارشنبه 22 فروردین 1386, 18:51 عصر
  2. سوال: ذخیره داده های کاربر با VB Script
    نوشته شده توسط dr-h6666 در بخش طراحی وب (Web Design)
    پاسخ: 2
    آخرین پست: شنبه 19 اسفند 1385, 19:00 عصر

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

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