Ich möchte wissen, warum, wenn ich einen benutzerdefinierten Datentyp in SQL Server, basierend auf einem Nicht-Null-Integer erstellen, und ich es einem Standard zuweisen Wert, ich kann diesen Wert nicht erhalten, wenn es keine Tabellendefinition ist (nur eine deklarierte Variable). Hier ist mein Code:SQL Server benutzerdefinierte nicht Null Datentyp mit Standardwert Null
BEGIN TRAN;
GO
CREATE TYPE Province FROM INT NOT NULL;
GO
CREATE DEFAULT ProvinceDefault AS 4;
GO
EXEC sp_bindefault
'ProvinceDefault',
'Province';
GO
DECLARE @Province Province;
SELECT @Province;
GO
ROLLBACK TRAN;
Es gibt NULL
Es ist nur die Art des 'default' Objekts, es gilt nur für Spalten. [MSDN] (https://msdn.microsoft.com/en-us/library/ms173565.aspx) gibt * an "Wenn der Wert an eine Spalte oder einen Alias-Datentyp gebunden ist, gibt er einen Wert an, der in die Spalte eingefügt werden soll an das das Objekt gebunden ist (oder im Falle eines Alias-Datentyps in alle Spalten), wenn während eines Einfügens kein Wert angegeben wird. * ". Es ist nicht möglich, einen Standardwert für eine Variable anzugeben. Es ist auch erwähnenswert, dass "CREATE DEFAULT" veraltet ist, also sollten Sie es wahrscheinlich vermeiden, alles zusammen zu verwenden. – GarethD