كيف يمكنني تحديد ما إذا كان العمود هو عمود هوية في MSSQL 2000؟

StackOverflow https://stackoverflow.com/questions/188967

  •  06-07-2019
  •  | 
  •  

سؤال

أريد أن أفعل ذلك بالكود، وليس باستخدام ALT+F1.

هل كانت مفيدة؟

المحلول

ويمكنك أيضا أن تفعل ذلك بهذه الطريقة:

select columnproperty(object_id('mytable'),'mycolumn','IsIdentity')

وإرجاع 1 إذا كان هوية، 0 إن لم يكن.

نصائح أخرى

sp_help tablename 

في إخراج البحث عن شيء مثل هذا:

 Identity     Seed     Increment     Not For Replication    
 -----------  -------  ------------  ---------------------- 
 userid       15500    1             0        

وضبط شرط WHERE لتناسب:

select
    a.name as TableName,
    b.name as IdentityColumn
from
    sysobjects a inner join syscolumns b on a.id = b.id
where
    columnproperty(a.id, b.name, 'isIdentity') = 1
    and objectproperty(a.id, 'isTable') = 1

وأما التوسع في @ الجواب Blogbeard ل

إذا كنت ترغب الاستعلام نقية وظائف لا يحمل في ثناياه عوامل

select col_name(sys.all_objects.object_id, column_id) as id from sys.identity_columns 
join sys.all_objects on sys.identity_columns.object_id = sys.all_objects.object_id
where sys.all_objects.name = 'system_files'

الهوية هي القيمة المستخدمة للصف الأول الذي تم تحميله في الجدول.

هناك مقالة من Microsoft يمكن أن توفر معرفة جيدة حول الهوية:

https://docs.microsoft.com/en-us/sql/t-sql/statements/create-table-transact-sql-identity-property?view=sql-server-2017

الآن، هناك طريقتان لتحديد العمود الذي يمثل عمود هوية في الجدول:

  • يمكننا استخدام استعلام SQL:يختارcolumnproperty(object_id('mytable'),'mycolumn','IsIdentity')
  • sp_help اسم الطاولة
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top