>Select COLUMN_NAME,
> DATA_TYPE,
> CHARACTER_MAXIMUM_LENGTH,
> NUMERIC_PRECISION,
> NUMERIC_SCALE
>From pubs.Information_Schema.Columns
>Where Table_Name = 'authors'
>
>come faccio a far leggere anche i campi che sono primary key?????
Ciao Andrea,
guarda che quella query restituisce tutte le colonne indipendentemente dai constraint che hai definito
>oppure che query devo usare per leggere le primary key di una
>tabella????
Ecco:
USE tempdb;
CREATE TABLE dbo.Students(
FirstName varchar(10) NOT NULL,
LastName varchar(10) NOT NULL,
BirthDate datetime NOT NULL,
CONSTRAINT PK_Students PRIMARY KEY(FirstName, LastName)
);
SELECT
COLUMN_NAME
, DATA_TYPE
, CHARACTER_MAXIMUM_LENGTH
, NUMERIC_PRECISION
, NUMERIC_SCALE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Students';
/* Output:
COLUMN_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH NUMERIC_PRECISION NUMERIC_SCALE
------------ ---------- ------------------------ ----------------- -------------
FirstName varchar 10 NULL NULL
LastName varchar 10 NULL NULL
BirthDate datetime NULL NULL NULL
(3 row(s) affected)
*/
SELECT CCU.COLUMN_NAME
FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE AS CCU
JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS TC
ON CCU.CONSTRAINT_NAME = TC.CONSTRAINT_NAME
WHERE CCU.TABLE_NAME = 'Students' AND
CCU.TABLE_SCHEMA = 'dbo' AND
TC.CONSTRAINT_TYPE = 'PRIMARY KEY';
/* Output:
COLUMN_NAME
------------
FirstName
LastName
(2 row(s) affected)
*/
DROP TABLE dbo.Students;
>grazie 1000
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org