كيف يمكنني تحديد ما إذا كان العمود هو عمود هوية في MSSQL 2000؟
-
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 يمكن أن توفر معرفة جيدة حول الهوية:
الآن، هناك طريقتان لتحديد العمود الذي يمثل عمود هوية في الجدول:
- يمكننا استخدام استعلام SQL:يختارcolumnproperty(object_id('mytable'),'mycolumn','IsIdentity')
- sp_help اسم الطاولة
لا تنتمي إلى StackOverflow