>Sto provando ad usare SQL 2005 Express per la prima volta.
>
>Mi sapete dire perchè mi viene quel messaggio di errore?.
>
>ed pure ho messo campo ID: int ed auto_increment
Ciao Luigi,
Immagino che con "auto_increment" tu intenda che hai definito la colonna ID come intero specificando la proprietà IDENTITY.
L'errore indica che la colonna ID è stata definita NOT NULL (quindi occorre necessariamente specificare un valore) ma per qualche motivo non è stata valorizzata in fase di INSERT (suppongo che hai commesso qualche errore con la proprietà IDENTITY).
Ora, se hai effettivamente specificato la proprietà IDENTITY, ogni operazione di INSERT genererà automaticamente un valore in base al seme ed al fattore di incremento specificati nella definizione della colonna.
Facciamo un esempio:
USE tempdb;
CREATE TABLE dbo.Students(
StudentID int NOT NULL IDENTITY(1, 1) PRIMARY KEY,
FirstName varchar(10) NOT NULL,
LastName varchar(10) NOT NULL
);
INSERT dbo.Students VALUES('Lorenzo', 'Benaglia');
INSERT dbo.Students VALUES('Luca', 'Bianchi');
INSERT dbo.Students VALUES('Andrea', 'Montanari');
SELECT *
FROM dbo.Students;
/* Output:
StudentID FirstName LastName
----------- ---------- ----------
1 Lorenzo Benaglia
2 Luca Bianchi
3 Andrea Montanari
(3 row(s) affected)
*/
DROP TABLE dbo.Students;
CREATE TABLE dbo.Students(
StudentID int NOT NULL IDENTITY(2, 5) PRIMARY KEY,
FirstName varchar(10) NOT NULL,
LastName varchar(10) NOT NULL
);
INSERT dbo.Students VALUES('Lorenzo', 'Benaglia');
INSERT dbo.Students VALUES('Luca', 'Bianchi');
INSERT dbo.Students VALUES('Andrea', 'Montanari');
SELECT *
FROM dbo.Students;
/* Output:
StudentID FirstName LastName
----------- ---------- ----------
2 Lorenzo Benaglia
7 Luca Bianchi
12 Andrea Montanari
(3 row(s) affected)
*/
DROP TABLE dbo.Students;
Nel primo caso ho definito la colonna StudentID come intero che non accetta il valore NULL (quindi di fatto ho reso obbligatorio un valore) e ho specificato un seme ed un fattore di incremento uguali a 1.
Come puoi norare i comandi di INSERT non specificano un valore esplicito per la colonna StudentID dato che verrà automaticamente valorizzata in base al seme ed al fattore di incremento.
La prima riga avrà StudentID pari al seme (1) mentre le successive verranno incrementate di un valore pari al fattore di incremento (1).
Nel secondo caso il seme è uguale a 2 ed il fattore di incremento vale 5.
Per ulteriori dettagli fai riferimento al seguente paragrafo dei Books Online:
"IDENTITY (Property) (Transact-SQL)"
http://msdn2.microsoft.com/en-us/library/ms186775.aspx
>ciao e grazie.
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org