24 messaggi dal 27 settembre 2012
Ciao a tutti,
devo aggiungere un check normalissimo così:


ALTER TABLE Tabella
ADD CONSTRAINT NomeCheck CHECK (CondizioneCheck)



Però vorrei che il messaggio di errore che viene fuori quando non viene superato il check fosse un messaggio d'errore che decido io e non quello standard di SQL tipo cosi' per intenderci:


ALTER TABLE Tabella
ADD CONSTRAINT NomeCheck CHECK (CondizioneCheck) 
ERROR_MESSAGE = 'Mio messaggio d'errore'



E' possibile?

Grazie.

Tutto ciò che non sai è vero!!!
1.976 messaggi dal 27 luglio 2005
Contributi
salve,
al momento non e' possibile, anche se la cosa e' stata gia' richiesta in passato (https://connect.microsoft.com/SQLServer/feedback/details/406783/custom-error-for-check-constraints) ed e' stato risposto "vedremo"...

l'unica porcheria che puoi attualmente fare e' dare un nome "particolare" al check constraint, similarmente a
SET NOCOUNT ON;
USE tempdb;
GO
CREATE TABLE dbo.t (
  id int NOT NULL
  );
ALTER TABLE dbo.t
  ADD CONSTRAINT 
    [Id deve essere compresa tra 1 e 100.] 
    CHECK (Id BETWEEN 1 AND 100);
GO
INSERT INTO dbo.t VALUES (10);
GO
INSERT INTO dbo.t VALUES (-1);
GO
INSERT INTO dbo.t VALUES (101);
GO
DROP TABLE dbo.t;
--<-------
Msg 547, Level 16, State 0, Line 1
The INSERT statement conflicted with the CHECK constraint "Id deve essere compresa tra 1 e 100.". The conflict occurred in database "tempdb", table "dbo.t", column 'id'.
The statement has been terminated.
Msg 547, Level 16, State 0, Line 1
The INSERT statement conflicted with the CHECK constraint "Id deve essere compresa tra 1 e 100.". The conflict occurred in database "tempdb", table "dbo.t", column 'id'.
The statement has been terminated.


ma cio' non toglie che "sia una porcheria" :)
saluti

Andrea Montanari
http://www.hotelsole.com - http://www.hotelsole.com/asql/index.php
24 messaggi dal 27 settembre 2012
Andrea Montanari ha scritto:
salve,
al momento non e' possibile, anche se la cosa e' stata gia' richiesta in passato (https://connect.microsoft.com/SQLServer/feedback/details/406783/custom-error-for-check-constraints) ed e' stato risposto "vedremo"...

l'unica porcheria che puoi attualmente fare e' dare un nome "particolare" al check constraint, similarmente a
SET NOCOUNT ON;
USE tempdb;
GO
CREATE TABLE dbo.t (
  id int NOT NULL
  );
ALTER TABLE dbo.t
  ADD CONSTRAINT 
    [Id deve essere compresa tra 1 e 100.] 
    CHECK (Id BETWEEN 1 AND 100);
GO
INSERT INTO dbo.t VALUES (10);
GO
INSERT INTO dbo.t VALUES (-1);
GO
INSERT INTO dbo.t VALUES (101);
GO
DROP TABLE dbo.t;
--<-------
Msg 547, Level 16, State 0, Line 1
The INSERT statement conflicted with the CHECK constraint "Id deve essere compresa tra 1 e 100.". The conflict occurred in database "tempdb", table "dbo.t", column 'id'.
The statement has been terminated.
Msg 547, Level 16, State 0, Line 1
The INSERT statement conflicted with the CHECK constraint "Id deve essere compresa tra 1 e 100.". The conflict occurred in database "tempdb", table "dbo.t", column 'id'.
The statement has been terminated.


ma cio' non toglie che "sia una porcheria" :)
saluti


È un po brutto in effetti così ;-) ma grazie mille comunque per la risposta, Buona serata....

Tutto ciò che non sai è vero!!!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.