Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

creare un campo contatore

145 views
Skip to first unread message

cicciottino

unread,
May 22, 2003, 4:44:01 AM5/22/03
to
premetto che non conosco il t-sql

mi potreste dare un pezzettino di codice per creare un
trigger che ad ogni inserimeto su una tabella mi incremeti
un campo, oppure esiste in sqlserver un capo contatore?
una sequence o qualcosa di simile?

Lorenzo Benaglia

unread,
May 22, 2003, 5:02:55 AM5/22/03
to

Ciao cicciottino,

SQL Server permette di incrementare automaticamente il valore di un campo
numerico tramite l'utilizzo dell'attributo IDENTITY.

Sintassi:

IDENTITY [ ( seed , increment ) ]

La proprietą IDENTITY prevede due argomenti:

- Seme (Seed) che rappresenta il valore iniziale da incrementare
- Fattore di incremento (Increment)

Esempio:

USE tempdb
GO

/************************************
*** Esempio 1 ***
************************************/

/* Creo la tabella dbo.Students */
CREATE TABLE dbo.Students(
StudentID int NOT NULL IDENTITY(1, 1) PRIMARY KEY,
FirstName varchar(20) NOT NULL,
LastName varchar(20) NOT NULL
)
GO

/* Inserisco 3 studenti */
INSERT dbo.Students VALUES('Lorenzo', 'Benaglia')
INSERT dbo.Students VALUES('Luca', 'Bianchi')
INSERT dbo.Students VALUES('Gianluca', 'Hotz')
GO

/* Query */
SELECT *
FROM dbo.Students

/* Output:

StudentID FirstName LastName
----------- -------------------- --------------------
1 Lorenzo Benaglia
2 Luca Bianchi
3 Gianluca Hotz

(3 row(s) affected)

*/
GO

/* Pulizia */
DROP TABLE dbo.Students
GO

/************************************
*** Esempio 2 ***
************************************/

/* Creo la tabella dbo.Students */
CREATE TABLE dbo.Students(
StudentID int NOT NULL IDENTITY(10, 5) PRIMARY KEY,
FirstName varchar(20) NOT NULL,
LastName varchar(20) NOT NULL
)
GO

/* Inserisco 3 studenti */
INSERT dbo.Students VALUES('Lorenzo', 'Benaglia')
INSERT dbo.Students VALUES('Luca', 'Bianchi')
INSERT dbo.Students VALUES('Gianluca', 'Hotz')
GO

/* Query */
SELECT *
FROM dbo.Students

/* Output:

StudentID FirstName LastName
----------- -------------------- --------------------
10 Lorenzo Benaglia
15 Luca Bianchi
20 Gianluca Hotz

(3 row(s) affected)

*/
GO

/* Pulizia */
DROP TABLE dbo.Students
GO

Per maggiori informazioni, leggi sui Books Online il paragrafo "IDENTITY
(Property)" URL:tsqlref.chm::/ts_ia-iz_3iex.htm

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server

UGIdotNET - http://www.ugidotnet.org
UGISS - http://www.ugiss.org


cicciottino

unread,
May 22, 2003, 8:37:19 AM5/22/03
to
grazie mille è proprio quello che mi serve, ma come faccio
a mettere questa proprieta ad un campo di una tabella gia
esistente?(la tabella la posso svuotare tranquillamente)

>-----Messaggio originale---


>cicciottino wrote:
>> premetto che non conosco il t-sql
>>
>> mi potreste dare un pezzettino di codice per creare un
>> trigger che ad ogni inserimeto su una tabella mi
incremeti
>> un campo, oppure esiste in sqlserver un capo contatore?
>> una sequence o qualcosa di simile?
>
>Ciao cicciottino,
>
>SQL Server permette di incrementare automaticamente il
valore di un campo
>numerico tramite l'utilizzo dell'attributo IDENTITY.
>
>Sintassi:
>
>IDENTITY [ ( seed , increment ) ]
>

>La proprietà IDENTITY prevede due argomenti:

>.
>

Lorenzo Benaglia

unread,
May 22, 2003, 10:26:44 AM5/22/03
to
cicciottino wrote:
> grazie mille è proprio quello che mi serve, ma come faccio
> a mettere questa proprieta ad un campo di una tabella gia
> esistente?(la tabella la posso svuotare tranquillamente)

Ciao cicciottino,

Purtroppo non è possibile aggiungere/rimuovere la proprietà IDENTITY da una
colonna in una tabella esistente ricorrendo ad un singolo comando T-SQL.
Prova a definire una nuova Trace con il SQL Profiler, apri Enterprise
Manager e modifica la proprietà IDENTITY di una tabella.
Noterai che dietro le quinte EM crea una tabella Tmp_NomeTabella con la
nuova impostazione della proprietà, vi copia tutte le righe dalla tabella
originale, rimuove la tabella originale ed infine rinomina la tabella
Tmp_NomeTabella in NomeTabella mediante la stored procedure di sistema
sp_rename.
Quindi o ti affidi a Enterprise Manager oppure esegui le singole operazioni
a mano da Query Analyzer.

0 new messages