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