C - SQLSERVER 2005: problama trigger

domenica 20 giugno 2010 - 17.23

fixed Profilo | Junior Member

ciao, ho un problema che non riesco a saltarci fuori:

ho una tabella del db in cui inserisco due valori e fin qui tutto ok.

ora ho creato il seguente trigger che mi aggiorna la data ogni qual volta inserisco un nuovo record, però da quando ho inserito il trigger, nel codic c# mi da quest errore:

"Impossibile assegnare il valore null a un membro di tipo System.Int64 con tipo di valore non nullable."

sul comando
conDb.SubmitChanges();

CREATETRIGGER [dbo].[insert_data]
ON
[DB_SC].[dbo].[t_blacklist]
INSTEADOFINSERT
AS
BEGIN
update db_sc.dbo.t_blacklist
set dt_insert =GETDATE()
END


grazie
Gianluca

lbenaglia Profilo | Guru

>ciao, ho un problema che non riesco a saltarci fuori:
>
>ho una tabella del db in cui inserisco due valori e fin qui tutto
>ok.
>
>ora ho creato il seguente trigger che mi aggiorna la data ogni
>qual volta inserisco un nuovo record, però da quando ho inserito
>il trigger, nel codic c# mi da quest errore:
>
>"Impossibile assegnare il valore null a un membro di tipo System.Int64
>con tipo di valore non nullable."
>
>sul comando
>conDb.SubmitChanges();
>
>CREATETRIGGER [dbo].[insert_data]
>ON
>[DB_SC].[dbo].[t_blacklist]
>INSTEADOFINSERT
>AS
>BEGIN
>update db_sc.dbo.t_blacklist
>set dt_insert =GETDATE()
>END

Ciao Gianluca,

Questo trigger è di tipo INSTEAD OF INSERT, quindi ogni volta che esegui un INSERT sulla tabella dbo.t_blacklist il comando NON viene eseguito ed al suo posto scatta il trigger che nel body va ad aggiornare la colonna dt_insert di TUTTE le righe con la data e ora correnti.
Secondo me volevi fare una cosa ben diversa, prova a spiegarci quale con un esempio completo.

>grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

fixed Profilo | Junior Member

ciao e grazie, mi spiego meglio.

allora io ho una tabella a db che ha 4 colonne
id: lo valorizzo con l'identity
codice1: li valorizzo da codice c# (uso T-SQL)
codice2:: li valorizzo da codice c#(uso T-SQL)
data_insert

ogni volta che insersco un nuovo record vorrei che per quel record inserito la data si valorizzasse con la data corrente

esempio:

se oggi inserisco primo record allora a db avro id = 1, codice1=1111, codice2=2222, data_insert = 21/06/2010

se domani inserisco secondo record allora a db avro id = 12, codice1=3333, codice2=4444, data_insert = 22/06/2010

spero di avert spiegato bene il problema

grazie
gianluca

lbenaglia Profilo | Guru

>allora io ho una tabella a db che ha 4 colonne
>id: lo valorizzo con l'identity
>codice1: li valorizzo da codice c# (uso T-SQL)
>codice2:: li valorizzo da codice c#(uso T-SQL)
>data_insert
>
>ogni volta che insersco un nuovo record vorrei che per quel record
>inserito la data si valorizzasse con la data corrente

Per fare questo non occorre scomodare un trigger, ma è sufficiente impostare un constraint di tipo DEFAULT sulla colonna data_insert.
Osserva il seguente esempio:

USE tempdb; CREATE table dbo.foo( fooID int NOT NULL IDENTITY PRIMARY KEY, codice1 int NOT NULL, codice2 int NOT NULL, dataInsert date NOT NULL DEFAULT (CURRENT_TIMESTAMP) ); INSERT dbo.foo(codice1, codice2) VALUES(10, 100); INSERT dbo.foo(codice1, codice2) VALUES(20, 200); INSERT dbo.foo(codice1, codice2) VALUES(30, 300); SELECT * FROM dbo.foo; /* Output: fooID codice1 codice2 dataInsert ----------- ----------- ----------- ---------- 1 10 100 2010-06-20 2 20 200 2010-06-20 3 30 300 2010-06-20 (3 row(s) affected) */ DROP TABLE dbo.foo;

>grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

fixed Profilo | Junior Member

ciao allora,
ho creato il costraint ma se effettuo un insert da Server Management Stduio la data viene valorizzata corettamente
mentre se lancio l'insert dal mio form che richiama il codice c# non viene valorizzata.

ho dimenticato qualcosa?

grazie

Gianluca

lbenaglia Profilo | Guru

>ciao allora,
>ho creato il costraint ma se effettuo un insert da Server Management
>Stduio la data viene valorizzata corettamente
>mentre se lancio l'insert dal mio form che richiama il codice
>c# non viene valorizzata.
>
>ho dimenticato qualcosa?
Boh, senza codice client C# è un po' difficile immaginare dove sia l'errore

>grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

fixed Profilo | Junior Member

ok scusami allego il codice

grazie
Gianluca

lbenaglia Profilo | Guru

>ok scusami allego il codice
Sono un po' arrugginito con le ultime diavolerie lato dev e quella InsertOnSubmit mi dice ben poco.
Magari ti potrà aiutare un dev più aggiornato di me

>grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

fixed Profilo | Junior Member

ciao,
ti volevo chiedere come faccio a vedere se è installato Il servizio FullText.

perchè non riesco a trovare come usare sql server profile e può essere quello il motivo ?!

grazie
Gianluca

lbenaglia Profilo | Guru

>ti volevo chiedere come faccio a vedere se è installato Il servizio
>FullText.

Ciao Gianluca,

Lancia il SQL Server Configuration Manager, seleziona SQL Server Services e sulla destra avrai tutti i servizi di SQL Server. Se tra questi non compare il SQL Server FullText Search significa che non è installato.

>perchè non riesco a trovare come usare sql server profile e può
>essere quello il motivo ?!
No
Cosa intendi con "non riesco a trovare come usare sql server profile"?
Tutte le info sul Profiler le trovi sui BOL:
http://msdn.microsoft.com/en-us/library/ms181091.aspx

>grazie
Prego.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

fixed Profilo | Junior Member

ciao volevo informarla che ho risolto!!!!!

il problema era che i campi della tabella mappata da VISUAL STUDIO

Auto Generated Value = false
Auto-sicn = never

mettondoli a true e oninsert ha funzionato.


Grazie del supporto
Gianluca

Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5