Posts
394
Comments
124
Trackbacks
0
September 2010 Entries
Per SQL den Primary-key einer Tabelle ermitteln

Um in einer stored procedure per SQL den Primary-key einer Tabelle zu ermitteln muss man die beiden Tabellen INFORMATION_SCHEMA.TABLE_CONSTRAINTS  und INFORMATION_SCHEMA.KEY_COLUMN_USAGE miteinander joinen: 

DECLARE @tabelle varchar(128)
set @tabelle = 'Tabellenname'

SELECT KCU.Column_name
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS TC
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KCU
ON TC.CONSTRAINT_TYPE = 'PRIMARY KEY' AND
TC.CONSTRAINT_NAME = KCU.CONSTRAINT_NAME
WHERE KCU.table_name=@tabelle
ORDER BY KCU.TABLE_NAME, KCU.ORDINAL_POSITION

 
oder ab SQL-Server 2005: 

select t.name as TABLE_NAME
     , k.unique_index_id
     , c.name as COLUMN_NAME, ic.key_ordinal AS ORDINAL_POSITION
  from sys.key_constraints as k
  join sys.tables as t
    on t.object_id = k.parent_object_id
  join sys.schemas as s
    on s.schema_id = t.schema_id
  join sys.index_columns as ic
    on ic.object_id = t.object_id
   and ic.index_id = k.unique_index_id
  join sys.columns as c
    on c.object_id = t.object_id
   and c.column_id = ic.column_id
 order by TABLE_NAME,  ORDINAL_POSITION

siehe: http://blogs.msdn.com/b/sqltips/archive/2005/09/16/469136.aspx

 

oder folgende stored procedure verwenden:

EXEC
sp_Pkeys @tabelle

posted @ Thursday, September 16, 2010 7:01 AM | Feedback (0)
In T-SQL überprüfen ob eine temporäre Tabelle bereits existiert:

Es gibt mit t-sql verschiedene Möglichkeiten zu überprüfen ob eine temporäre Tabelle bereits existiert: 

CREATE TABLE #temp(j int)


1 Variante:

if object_id(N'tempdb..#temp') is not null
begin
-- do something
End

 
2. Variante:

if exists ( 
   select * from tempdb.dbo.sysobjects o 
   where o.xtype in ('U') 
   and o.id = object_id(N'tempdb..#temp')
)

begin
-- do something
end

Diese zwei Varianten funktionieren auch mit globalen temporären Tabellen (##temp).

posted @ Tuesday, September 07, 2010 6:57 AM | Feedback (0)