INFORMATION_SCHEMA.TABLES
La Vista di sistema INFORMATION_SCHEMA.TABLES è presente in tutti i Database creati in SQl Server 2005. Fornisce un'elenco delle Tabelle/Viste presenti sul database
Contiene i campi
TABLE_CATALOG (nvarchar(128), NULL)
TABLE_SCHEMA (sysname(nvarchar(128)), NULL)
TABLE_NAME (sysname(nvarchar(128)), NOT NULL)
TABLE_TYPE (varchar(10), NULL)
TABLE_CATALOG contiene il nome del Database in cui la tabella/vista è contenuta;
TABLE_SCHEMA contiene il nome dello Schema in cui la tabella/vista è contenuta;
TABLE_NAME contiene in nome della tabella/vista
TABLE_TYPE contiene il valore BASE TABLE per le tabelle e VIEW per le viste
SELECT * FROM INFORMATION_SCHEMA.TABLES
ORDER BY TABLE_TYPE, TABLE_NAME
Il result set nel mio Database di prova è:
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE
prova dbo impiegati BASE TABLE
prova dbo lavori BASE TABLE
prova dbo presenze BASE TABLE
prova dbo VW_ImpiegatiLavori VIEW
Se faccio
CREATE SCHEMA Lavori
GO
ALTER SCHEMA Lavori TRANSFER dbo.Lavori
GO
SELECT * FROM INFORMATION_SCHEMA.TABLES
ORDER BY TABLE_TYPE, TABLE_NAME
Il result set nel mio Database di prova diventa:
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE
prova dbo impiegati BASE TABLE
prova Lavori lavori BASE TABLE
prova dbo presenze BASE TABLE
prova dbo VW_ImpiegatiLavori VIEW
La Vista INFORMATION_SCHEMA.TABLES serve per controllare se una Tabella o Vista è presente su un Database per un determinato Schema. Lo statement è
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'Lavori'
AND TABLE_SCHEMA = 'Lavori')
DROP TABLE Lavori.Lavori;
CREATE TABLE Lavori.Lavori
(
codice int NOT NULL,
rep int NOT NULL,
datainizio datetime,
datafine, datetime
PRIMARY KEY (codice, rep)
);
venerdì, 01 dic 2006 Ore. 15.17