SQL Server 2008 - dotaz pro vypsání parametrů tabulky

MyEgo.cz

home foto blogy mywindows.cz kontakt

SQL Server 2008 - dotaz pro vypsání parametrů tabulky

PHP 27.11.09

Jedna ze základních funkcí každého redakčního systému je editor číselníků. V každé aplikaci jich existuje spousta, a mají mezi sebou různé relace. Máme jej napsaný pro různé databáze, od MySQL, přes Oracle po SQL Server 2008.

V praxi to funguje tak, že se skript napojí na INFORMATION_SCHEME, načte si automaticky strukturu tabulky, datové typy, délky polí, autoincrementy, komentář k polím, přidá k tomu případné odkazy na jiné číselníky (třeba tabulka měst se odkazuje na tabulku krajů), a tyto umožní pohodlně editovat. Textová pole jsou samozřejmě zpracovávána WYSIWYG editorem. Je to prostě komfortní možnost jak rychle upravit parametry aplikace pro běžné uživatele.

V případě MySQL existuje INFORMATION_SCHEME.COLUMNS tabulka, v níž je vše potřebné. Na SQL Server 2008 musíte použít poněkud složitější dotaz, a to třeba takovýto:

CREATE VIEW [dbo].[dbscheme] AS
SELECT t.name AS TabulkaNazev, c.colid AS SloupecPozice, c.name AS SloupecNazev, ISNULL(i.CHARACTER_MAXIMUM_LENGTH, i.NUMERIC_PRECISION) AS SloupecDelka, i.DATA_TYPE AS SloupecTyp, i.COLUMN_DEFAULT AS SloupecDefault, CAST(cd.value AS varchar(255)) AS SloupecPopis,
COLUMNPROPERTY(OBJECT_ID(i.TABLE_NAME), i.COLUMN_NAME, 'IsIdentity') AS IsIdentity
FROM sys.sysobjects AS t JOIN sys.syscolumns AS c ON c.id = t.id JOIN INFORMATION_SCHEMA.COLUMNS AS i ON i.TABLE_CATALOG = 'databáze' AND i.TABLE_SCHEMA = 'dbo' AND i.TABLE_NAME = t.name AND i.COLUMN_NAME = c.name LEFT JOIN sys.extended_properties AS cd ON cd.major_id = c.id AND cd.minor_id = c.colid AND cd.name = 'MS_Description'
WHERE t.type = 'u'

Výsledkem bude pohled, který vám nabídne název tabulky, jméno a datový typ sloupce, jeho defaultní hodnotu, velikost datového pole a description ke sloupci (SloupecPopis), který následně můžete zobrazit uživateli jako textový popis (takže namísto technického itemid aplikace vypisuje automaticky sloupec jako Číslo článku).

Pokud si napíšete editor číselníků tak, že pracuje s tímto schématem, při změně struktury databáze nic nemusíte upravovat. V praxi pak doslova během pár sekund nadefinujete třeba takovouto editaci:

editor číselníků

Nad strukturou číselníků je samozřejmě postaveno i přidání nové položky, stránkování a hledání.


Komentáře

  1. 1 Vitto 29.11.09, 10:11:06
    FB

    Něco podobného jsem nedávno taky řešil.
    Myslím, že umístit sem ještě zjištění primárních klíčů a foreign, taky není od věci.

  2. 2 Radek Hulán 29.11.09, 10:11:12
    FB

    [1] třeba zde:
    http://blogs.msdn.com/sqltips/archive/2005/09/16/469136.aspx...