Ich versuche, eine Beziehung zwischen zwei Tabellen zu erstellen, wobei eine Spalte in TABELLE A der Fremdschlüssel für eine Spalte in TABELLE B ist. Es gibt jedoch eine Zeile in TABELLE B, die derzeit in dieser Spalte null ist und mir einen Fehler gibt . Nach dem Googeln scheint der allgemeine Konsens jedoch zu sein, dass Null ein akzeptabler Wert in einem Fremdschlüsselfeld ist. Aufgrund der Fehlermeldung kann ich diese Beziehung in SSMS jedoch immer noch nicht erstellen. Wie kann ich das umgehen?
Error:
Unable to create relationship 'FK_RELATIONSHIP'.
The ALTER TABLE statement conflicted with the FOREIGN KEY
constraint "FK_RELATIONSHIP". The conflict occurred in database "DATABASE",
table "TABLE A", column 'COLUMN 1'.
SQL-Code wie gewünscht:
USE [DATABASE]
GO
/****** Object: Table [dbo].[TABLEA] Script Date: 10/02/2012 17:44:42 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[TABLEA](
[COLUMN1] [nvarchar](4) NOT NULL,
CONSTRAINT [PK_TABLEA] PRIMARY KEY CLUSTERED
(
[COLUMN1] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[TABLEB] Script Date: 10/02/2012 17:44:42 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[TABLEB](
[COLUMN1] [nvarchar](15) NOT NULL,
[COLUMN2] [nvarchar](4) NULL,
CONSTRAINT [PK_TABLEB] PRIMARY KEY CLUSTERED
(
[COLUMN1] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Vielen Dank
NULL
Sie sehen , dass es tatsächlich null ist und nicht den Inhalt von nvarchar?NULL
ist dies in einem Fremdschlüsselfeld zulässig: sqlfiddle.com/#!3/ab003 . Wenn Sie jedoch die Zeichenfolge'NULL'
als Wert verwenden, wird dieselbe Fehlermeldung generiert: sqlfiddle.com/#!3/ab003 . Wenn Sie noch einen Schritt weiter gehen möchten, installieren Sie das SSMS Tools Pack und generieren Sie mithilfe des Assistenten zum Generieren von Einfügeskripten SQL für den genauen Inhalt Ihrer Tabellen und bearbeiten Sie es in Ihrem Beitrag. Sie können auch die Option "Änderungsskript generieren" verwenden, um die SQL für Ihre vorgeschlagene fk_relationship einzuschließen.Antworten:
Für alle, die hier mit der gleichen Frage stolpern. Eine leere Zelle ist nicht dasselbe wie eine NULL-Zelle. Leere Zellen sind nicht NULL!
quelle
Wenn Sie Ihre "NULL" -Werte in "Keine" ändern und dies funktioniert, ist möglicherweise nur eine leere Zeichenfolge oder ein verstecktes Zeichen darin enthalten.
Versuchen Sie danach, Ihre FK neu zu erstellen.
quelle