Betrachten Sie das folgende Schema ...SQL Server 2012-Spalte abrufen kann nicht null sein, wenn die Spalte eine Standardeinschränkung aufweist.
create table dbo.dg_world_records(
WorldRecordId int not null identity(1,1)
, GameTypeId int not null
, PlayerId int not null
, NumberOfValues int not null
, TotalTime int not null
, DateOfRecord datetime not null
, GameId int not null
, UTCInserted datetime not null
, UTCUpdated datetime not null
, SrvName varchar(30) not null
)
go
alter table dg_world_records add constraint dg_world_records_worldrecordid_pk primary key (worldrecordid)
go
alter table dg_world_records add constraint dg_world_records_utcinserted_df default getutcdate() for utcinserted
go
alter table dg_world_records add constraint dg_world_records_utcupdated_df default getutcdate() for utcupdated
go
alter table dg_world_records add constraint dg_world_records_srvname_df default @@servername for srvname
go
ich definieren, nicht null-Spalten und für die letzten drei Spalten (UTCInserted, UTCUpdated, & srvname) Ich schaffe Standardeinschränkungen.
Ich habe dies viele Male auf dem Entwicklungsserver meines Unternehmens getan und alles funktioniert gut.
In meiner lokalen Instanz von SQL Server 2012 wirft die folgende INSERT-Anweisung jedoch einen Fehler.
insert into dbo.dg_world_records(gametypeid, playerid, numberofvalues, totaltime, dateofrecord, gameid)
values(11, 1, 365, 430000, getdate(), -1)
Hier ist die Fehlermeldung ...
Msg 515, Level 16, State 2, Line 1
Cannot insert the value NULL into column 'SrvName', table 'dateguess.dbo.dg_world_records'; column does not allow nulls. INSERT fails.
The statement has been terminated.
Meine Vermutung ist, dass es eine Umgebungseinstellung in SQL Server ist, dass Sie nicht angeben, einen Wert für eine nicht null Spalte, in der eine Standard erlaubt Einschränkung ist definiert.
Danke,
Sind Sie 100% sicher, dass Sie eine Einschränkung für die SrvName-Spalte haben? Dieser Code sollte gut funktionieren. –
Haben Sie einen Auslöser auf dem Tisch? –
Ich habe gerade den Code unseres SQL 2016 Dev-Servers ausgeführt und es hat funktioniert. Kein Trigger, da die Tabelle vor dem Ausführen meines Codes gelöscht wurde. – codingguy3000