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:
- 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
>-----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:
>.
>
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.