PDA

View Full Version : بدست آوردن اسم ستون به همراه مشخص کردن PK بودن یا نبودن



تبسم ساینا
پنج شنبه 07 خرداد 1394, 17:34 عصر
سلام .. من این اسکریپت رو نوشتم واسه اینکه اسم ستون های جدول register رو برام بیاره و در یه ستون اضافه تر مشخص کنه که آیا اون ستون کلید اصلی هست یا نه:
SELECT c.column_id ID, c.name ItemName,
CASE
WHEN tblCon.CONSTRAINT_TYPE = 'PRIMARY KEY' THEN 1
ELSE 0
END ISPK
FROM sys.tables tb
JOIN sys.columns c
ON tb.name = 'register'
AND tb.[object_id] = c.[object_id]
JOIN sys.types tp
ON c.user_type_id = tp.user_type_id
LEFT JOIN sys.computed_columns cc
ON c.[object_id] = cc.[object_id]
AND c.column_id = cc.column_id
LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS K
ON c.name = k.COLUMN_NAME
LEFT JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS tblCon
ON tblCon.TABLE_NAME = 'register'
AND tblCon.CONSTRAINT_CATALOG = K.CONSTRAINT_CATALOG
AND tblCon.CONSTRAINT_SCHEMA = K.CONSTRAINT_SCHEMA
AND tblCon.CONSTRAINT_NAME = K.CONSTRAINT_NAME
مشکلی که دارم اینه که اون ستونی که کلید اصلی هست رو دوباهر تکرار میکنه و واسه یکیش میزنه ispk=0 و واسه اون یکی ispk=1.
اشکال کجاست؟131742

golnaz_a
پنج شنبه 07 خرداد 1394, 21:35 عصر
کوئری تون رو اینجوری بنویسید:


SELECT column_id,name,Case when column_name=name then 1 else 0 end ISPK
FROM sys.columns inner join INFORMATION_SCHEMA.KEY_COLUMN_USAGE on object_id=OBJECT_ID(table_name)
WHERE table_name='register'