ورود

View Full Version : در مورد ALTER TABLE



Hamedm
پنج شنبه 22 دی 1384, 21:10 عصر
سلام

بنظر شما کجای دستور زیر غلطه؟

ALTER TABLE TestF
ALTER COLUMN
TestField NVARCHAR DEFAULT 0


در پناه حق موفق باشید و پرتوان

AminSobati
شنبه 24 دی 1384, 00:08 صبح
دوست عزیزم،
اشکالش اینجاست که شما یک فیلد رو Alter میکنید برای اضافه کردن یک Constraint. در حالیکه اضافه کردن Constraint نیازی به ALTER COLUMN نداره. یعنی Syntax اضافه کردن Constraint به شکلیه که فیلد مورد نظر رو مشخص میکنه:


ALTER TABLE TestF
ADD DEFAULT 0 FOR TestField

Hamedm
شنبه 24 دی 1384, 08:38 صبح
سلام


دوست عزیزم،
اشکالش اینجاست که شما یک فیلد رو Alter میکنید برای اضافه کردن یک Constraint. در حالیکه اضافه کردن Constraint نیازی به ALTER COLUMN نداره. یعنی Syntax اضافه کردن Constraint به شکلیه که فیلد مورد نظر رو مشخص میکنه:


ALTER TABLE TestF
ADD DEFAULT 0 FOR TestField

از پاسختان تشکر میکنم. شما درست میگید، من اصلا حواسم به Constraint نبود.
درضمن من میخواهم DEFAULT فیلدهای تمام دیتابیس رو تغییر بدم، این راهی که جنابعالی فرمودید برای اضافه کردن DEFAULT بود نه تغییر آنها.
در Books Online موردی رو برای تغییر پیدا نکردم. آیا باید اول تمام DEFUALT هارو پاک (DROP) کنم بعد اضافه کنم؟

در ضمن برای تغییر تمام فیلدهای دیتابیس راهی بنظرتون میرسه؟ یا مجبورم فیلدهارو تک تک تغیر بدم (کل دیتابیس حدود 400تا فیلد داره).

متنظر پاسختان هستم.

با تشکر از زحمات جنابعالی

در پناه حق موفق باشید و پرتوان

Hamedm
یک شنبه 25 دی 1384, 19:13 عصر
سلام

جناب ثباتی بی صبرانه منتظر راهنمایی تون هستم.

در پناه حق موفق باشید و پرتوان

AminSobati
دوشنبه 26 دی 1384, 00:05 صبح
حامد جان، تغییر مقدار DEFAULT تنها با DROP کردن و ساخت مجدد Constraint میسر هستش. حتی در EM وقتی مقدار Default رو تغییر میدین و Save میکنین، در حقیقت خود EM برای شما کار DROP و ساخت مجدد رو انجام میده.
برای انجام این کار روی تمام فیلدها، باید آستین ها رو بالا بزنید و با کمک Cursor و جداول سیستمی (که اطلاعات Constraintها رو برمی گردونند) یک Script بنویسید

Hamedm
دوشنبه 26 دی 1384, 07:34 صبح
حامد جان، تغییر مقدار DEFAULT تنها با DROP کردن و ساخت مجدد Constraint میسر هستش. حتی در EM وقتی مقدار Default رو تغییر میدین و Save میکنین، در حقیقت خود EM برای شما کار DROP و ساخت مجدد رو انجام میده.
برای انجام این کار روی تمام فیلدها، باید آستین ها رو بالا بزنید و با کمک Cursor و جداول سیستمی (که اطلاعات Constraintها رو برمی گردونند) یک Script بنویسید

سلام

از راهمنایی تون تشکر میکنم.

در پناه حق موفق باشید و پرتوان

alireza_CBoy
چهارشنبه 28 دی 1384, 11:59 صبح
حامد جان، تغییر مقدار DEFAULT تنها با DROP کردن و ساخت مجدد Constraint میسر هستش. حتی در EM وقتی مقدار Default رو تغییر میدین و Save میکنین، در حقیقت خود EM برای شما کار DROP و ساخت مجدد رو انجام میده.
برای انجام این کار روی تمام فیلدها، باید آستین ها رو بالا بزنید و با کمک Cursor و جداول سیستمی (که اطلاعات Constraintها رو برمی گردونند) یک Script بنویسید

من طبق Books Online دستورات زیر رو برای DROP کردن یک DEFAUL نوشتم، ولی خطا میده:

ALTER TABLE TableName
DROP CONSTRAINT DEFAULT COLUMN Field

میشه منو راهنمایی کنید؟

AminSobati
پنج شنبه 29 دی 1384, 14:38 عصر
ALTER TABLE MyTable
DROP CONSTRAINT MyConst1

alireza_CBoy
پنج شنبه 29 دی 1384, 15:03 عصر
ALTER TABLE MyTable
DROP CONSTRAINT MyConst1

آقای ثباتی من تازه با SQK Server آشنا شدم.

میشه بگید باید بجای MyConst1 چی قرار بدم؟

AminSobati
جمعه 30 دی 1384, 00:17 صبح
اگر خودتون به Constraint نام ندادین، بوسیله EXEC SP_HelpConstraint باید نام Constraint رو بدست بیارین و جایگزین کنین در دستور ALTER