Group: microsoft.public.it.sql




Subject: SQL Server...personalizzare il tipo di dati
From: Andrea Benedetti
Date: 4/24/2007 3:22:34 PM
Salve manoj, <manoj@tg26.com> ha scritto nel messaggio news:1177420226.662088.276620@b40g2000prd.googlegroups.com... >Salve ragazzi.. >premesso che son nuovo in SQL Server 2005 e che sto creando un >database per un software di gestione magazzino. >Dunque..come piattaforma sto utilizzando Visaual Studio 2005 e per >creare il mio database sto usando Microsfot SQL Server Management >Studio express.. > >Ho creato una tabella e le varie colonne..ma come faccio a impostare >per esempio la lunghezza massima di caratteri consentiti per un tipo >di dato money?Sotto nelle proprietà colonna è tutto blocccato.. > >Qualcuno può aiutarmi? Il tipo MONEY non è customizzabile. Ha una dimensione di 8 byte e consente di memorizzare da -922.337.203.685.477,5808 a 922.337.203.685.477,5807 Diverso sarebbe l'utilizzo del campo DECIMAL in cui puoi specificare precisione e scala: declare @d decimal(10,3) set @d = 1234567,123 Ciao! -- Andrea Benedetti Microsoft MVP - SQL Server www.absistemi.it - www.ugiss.org http://blogs.ugidotnet.org/ab http://mvp.support.microsoft.com http://italy.mvps.org

Subject: SQL Server...personalizzare il tipo di dati
From: Lorenzo Benaglia
Date: 4/24/2007 3:40:48 PM
manoj@tg26.com wrote: > Ho creato una tabella e le varie colonne..ma come faccio a impostare > per esempio la lunghezza massima di caratteri consentiti per un tipo > di dato money?Sotto nelle proprietà colonna è tutto blocccato.. > > Qualcuno può aiutarmi? Se il problema è limitare il range di validità, puoi utilizzare il suggerimento di Andrea oppure se ti serve una configurazione più fine puoi ricorrere ad un check constraint. Nel seguente esempio faccio in modo che i valori della colonna Importo siano compresi tra 0 e 100: USE tempdb; CREATE TABLE dbo.Dati( Importo money NOT NULL, CONSTRAINT CHK_Importo CHECK (Importo BETWEEN 0 AND 100.0000) ); INSERT dbo.Dati VALUES(-1.0000); INSERT dbo.Dati VALUES(100.0001); /* Output: Msg 547, Level 16, State 0, Line 1 The INSERT statement conflicted with the CHECK constraint "CHK_Importo". The conflict occurred in database "tempdb", table "dbo.Dati", column 'Importo'. The statement has been terminated. Msg 547, Level 16, State 0, Line 2 The INSERT statement conflicted with the CHECK constraint "CHK_Importo". The conflict occurred in database "tempdb", table "dbo.Dati", column 'Importo'. The statement has been terminated. */ INSERT dbo.Dati VALUES(0.0000); INSERT dbo.Dati VALUES(10.0000); INSERT dbo.Dati VALUES(100.0000); SELECT * FROM dbo.Dati; /* Output: Importo --------------------- 0,00 10,00 100,00 (3 row(s) affected) */ DROP TABLE dbo.Dati; In questo caso ha poco senso utilizzare il data type money dato che smallmoney ti permetterebbe di risparmiare ben 4 bytes! Ciao! -- Lorenzo Benaglia Microsoft MVP - SQL Server http://blogs.dotnethell.it/lorenzo http://italy.mvps.org