Discussione:
Insert TIMESTAMP
(troppo vecchio per rispondere)
Daniele
2006-03-06 15:49:31 UTC
Permalink
Ciao ,

sto facendo una insert in una tabella con una colonna di tipo timestamp.
ecco un esempio:
insert tabella
select 'pippo','pluto',qui dovrebbe andare il time stamp,'zio pino
vorrei mettere un valore di default al momento dell'insert ma continua a
fallire
ho provato a mettere un default tipo lo zero

insert tabella
select 'pippo','pluto',0,'zio pino

se faccio invece

insert tabella
select 'pippo','pluto','zio pino --omettendo lo spazio per il valore mi dice :

Server: Msg 213, Level 16, State 4, Line 1
Insert Error: Column name or number of supplied values does not match table
definition.
Non va e non riesco a fare la insert per colpa di questo timestamp

grazie in anticipo
Marcello
2006-03-06 16:34:30 UTC
Permalink
Post by Daniele
Ciao ,
Ciao,
Post by Daniele
Server: Msg 213, Level 16, State 4, Line 1
Insert Error: Column name or number of supplied values does not match table
definition.
Devi usare la parola chiave default oppure specificare le colonne,
osserva questo esempio:

use tempdb
go
create table test(a int,b timestamp,c int)
go
insert into test values(1,default,1)
insert into test(a,c) values(2,2)
insert into test(a,c) select 2,2
go
select * from test
go
drop table test
Post by Daniele
grazie in anticipo
marc.
--
Marcello Poletti
http://www.epomops.it
http://blogs.dotnethell.it/epomops/
Daniele
2006-03-07 08:23:31 UTC
Permalink
Post by Marcello
Post by Daniele
Ciao ,
Ciao,
Post by Daniele
Server: Msg 213, Level 16, State 4, Line 1
Insert Error: Column name or number of supplied values does not match table
definition.
Devi usare la parola chiave default oppure specificare le colonne,
use tempdb
go
create table test(a int,b timestamp,c int)
go
insert into test values(1,default,1)
insert into test(a,c) values(2,2)
insert into test(a,c) select 2,2
go
select * from test
go
drop table test
Post by Daniele
grazie in anticipo
marc.
--
Marcello Poletti
http://www.epomops.it
http://blogs.dotnethell.it/epomops/
Non capisco, se ometto il valore mi da questo errore:

Disallowed implicit conversion from data type varchar to data type
timestamp, table 'servicetraq.dbo.Login_Contact_Info', column
'Row_Version_ID'. Use the CONVERT function to run this query.

eppure faccio come per la colonna identity non lo considero ai fini
dell'inserimento ed infatti mette un id da solo.
ho visto che la colonna con timestamp non ha un valore di default nel design
table
Marcello
2006-03-07 08:57:16 UTC
Permalink
Non capisco cosa non capisci :-D
Sui BOL trovi tutte le specifiche per la sintassi di insert e tutti i
dettagli relativi a Identity e Timestamp. Timestamp, un po' come
Identity viene calcolato dal sistema e ha un valore di default
implicito, il timestamp successivo, ma questo valore non può essere
totalmente omesso [sia dalla definizione delle colonne che dai valori
passati come per identity]. Fai qualche prova in QA o SSMS:

use tempdb
go
create table test(id int identity,a int,b timestamp,c int)
go
/*Questi inserimenti funzionano correttamente*/
insert into test values(1,default,1)
insert into test(a,c) values(2,2)
insert into test(a,c) select 2,2
go
/*il campo timestamp non può essere omesso implicitamente, nel caso si
ha un rerrore*/
insert into test select 2,2
go
/*però a differenza di identity può essere passato come valore nullo [se
il campo ammette null ovviamente]*/
insert into test select 2,null,2
go
/* mentre non può essere passato un valore non nullo*/
insert into test select 2,0x01,2
go
/*il campo identity non può essere passato..*/
insert into test(ID,c) values(100,2)
go
/*nemmeno come default!*/
insert into test(ID,c) values(default,2)
go
/*default è ammesso solo tra i values, non in select*/
insert into test select 1,default,1
go
select * from test
drop table test
Post by Daniele
eppure faccio come per la colonna identity non lo considero ai fini
dell'inserimento ed infatti mette un id da solo.
ho visto che la colonna con timestamp non ha un valore di default nel design
table
marc.
--
Marcello Poletti
http://www.epomops.it
http://blogs.dotnethell.it/epomops/
Daniele
2006-03-07 11:41:48 UTC
Permalink
Post by Marcello
Non capisco cosa non capisci :-D
Sui BOL trovi tutte le specifiche per la sintassi di insert e tutti i
dettagli relativi a Identity e Timestamp. Timestamp, un po' come
Identity viene calcolato dal sistema e ha un valore di default
implicito, il timestamp successivo, ma questo valore non può essere
totalmente omesso [sia dalla definizione delle colonne che dai valori
use tempdb
go
create table test(id int identity,a int,b timestamp,c int)
go
/*Questi inserimenti funzionano correttamente*/
insert into test values(1,default,1)
insert into test(a,c) values(2,2)
insert into test(a,c) select 2,2
go
/*il campo timestamp non può essere omesso implicitamente, nel caso si
ha un rerrore*/
insert into test select 2,2
go
/*però a differenza di identity può essere passato come valore nullo [se
il campo ammette null ovviamente]*/
insert into test select 2,null,2
go
/* mentre non può essere passato un valore non nullo*/
insert into test select 2,0x01,2
go
/*il campo identity non può essere passato..*/
insert into test(ID,c) values(100,2)
go
/*nemmeno come default!*/
insert into test(ID,c) values(default,2)
go
/*default è ammesso solo tra i values, non in select*/
insert into test select 1,default,1
go
select * from test
drop table test
Post by Daniele
eppure faccio come per la colonna identity non lo considero ai fini
dell'inserimento ed infatti mette un id da solo.
ho visto che la colonna con timestamp non ha un valore di default nel design
table
marc.
--
Marcello Poletti
http://www.epomops.it
http://blogs.dotnethell.it/epomops/
Risolto.

grazie mille per le dritte ;-)
Continua a leggere su narkive:
Loading...