ورود

View Full Version : تبدیل فیلد smallint به int با کد SQL. در جدول حاوی اطلاعات



Chabok
پنج شنبه 06 دی 1386, 21:14 عصر
سلام دوستان

من یک جدول دارم که فیلد اول آن AutoIncrement و PrimaryKey است و DataType آن از نوع smallint انتخاب شده بود .

این جدول حاوی اطلاعات است.

اسم این فیلد ID می باشد .
من میخوام توسط کد SQL این فیلد رو به DataType نوع int تبدیل کنم .
دیتابیس هم SQLServer 2005 می باشد
احتمال میدم باید از دستور Alter Table استفاده بشه :لبخند:

ولی نمیدونم چجوری باید نوشته بشه.
آیا اطلاعات سایر فیلدها هم احتیاج است ؟

چون دسترسی مستقیم به سرور برای کانکت شدن مستقیم ندارم نیاز به کد دارم .

AminSobati
جمعه 07 دی 1386, 19:21 عصر
دوست عزیزم،
شما میتونین با این دستورات جنس فیلد یا خاصیت Null پذیری رو تغییر بدین اما قبلش باید خاصیت PK بودن رو ازش بگیرین:


create table t1(
c1 smallint constraint Const1 primary key)
go

-- This fails
alter table t1
alter column c1 int not null
go

alter table t1
drop constraint Const1
go

-- This works
alter table t1
alter column c1 int not null
go

-- Bring back the PK
alter table t1
add constraint Const1 primary key (c1)

Chabok
دوشنبه 10 دی 1386, 18:58 عصر
سلام آقای ثباتی . ممنونم از جواب شما
فقط میخواستم بدونم اگر فیلد من بصورت Identity باشد این خاصیتش حفظ می شود ؟

برای مثال من جدولی بصورت زیر دارم


CREATE TABLE [dbo].[Users](
[AID] [int] IDENTITY(1,1) NOT NULL,
CONSTRAINT [PK_Admins] PRIMARY KEY CLUSTERED
(
[AID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

GOبا این کدهایی که شما فرمودین در اینجا چگونه باید رفتار کنیم ؟
آیا اون IDENTITY(1,1) حفظ می شود ؟

MShirzadi
دوشنبه 10 دی 1386, 20:26 عصر
آره خاصیت Identity اون حفط می شه
اگر می شه یه کمی هم خودتون تست کنین شاید به یه سری جواب ها رسیدین

Chabok
سه شنبه 11 دی 1386, 09:50 صبح
ممنونم از شما.
متاسفانه چون دسترسی به سرور نداشتتم و یک کوئری صد در صد درست میخواستم اجرا کنم ادامه دادم .
چون سرور در دبی است . و پر از اطلاعات . چند هزار رکورد داره . نمیتونم ریسک کنم .
چون من حدود 4 تا جدول دارم که همگی این شرایط رو داشتند یکمی وضع خطیر بود .

باز هم ممنون . مشکلی بود در ادامه همین تاپیک مزاحم خواهد شد .

AminSobati
چهارشنبه 12 دی 1386, 20:17 عصر
چرا نباید حفظ بشه؟!

Chabok
پنج شنبه 13 دی 1386, 13:42 عصر
سلام
گفتم شاید در Alter باید تمام ویژگی ها از نو تعریف بشوند .

مثلا بعد از پرانتز Constraint که عبارت زیر نوشته شده :

WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]آیا لازم است که پس از Drop کردن Constraint و ایجاد دوباره آن این دستور هم ذکر شود ؟

آیا بدون ذکر کردن هم IGNORE_DUP_KEY مقدارش Off است ؟
ممنونم .

یک سوال مشابه هم هست . اگر ایرادی نداشته باشد همین جا عرض کنم .
این عباراتی که قبل و بعد از دستورات بصورت اتوماتیک توسط خود SQL Server 2005 نوشته می شود چه کاری انجام می دهند و آیا نوشتن آن ها الزامی است ؟

برای مثال عبارات زیر :


SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
SET ANSI_PADDING ON
و در آخر دستور هم نوشته :

SET ANSI_PADDING OFFممنون و سپاسگزار