Hallo,
ich habe eine Datenbank erstellt und möchte in die Benutzertabelle nun gerne Daten eintragen.
Die Beziehungen verschiedener Tabellen zueinander ist bewußt gewählt. Nur habe ich mir dadurch selbst das Leben schwer gemacht, weil sobald ein ForeignKey als PrimaryKey in einer anderen Tabelle noch nicht existiert, dieser Datensatz nicht angelegt wird.
Das Script für die Erstellung der Benutzertabelle siet wie folgt aus:
CREATE TABLE [dbo].[TABLE_USERS](
[PRIMARY_KEY] [bigint] IDENTITY(1,1) NOT NULL,
[FIRST_NAME] [nchar](50) NOT NULL,
[LAST_NAME] [nchar](50) NOT NULL,
[COMPANY_FK] [bigint] NOT NULL,
[LANGUAGE_FK] [bigint] NOT NULL,
[FIRST_MASK] [bigint] NULL,
[CREATE_TIMESTAMP] [datetime] NOT NULL,
[CHANGE_USER_FK] [bigint] NOT NULL,
[CHANGE_IP] [nchar](15) NOT NULL,
[CHANGE_SUBNET_MASK] [nchar](15) NOT NULL,
[CHANGE_GATEWAY] [nchar](15) NOT NULL,
[CHANGE_TIMESTAMP] [datetime] NOT NULL,
CONSTRAINT [TABLE_USERS_PK] PRIMARY KEY CLUSTERED
(
[PRIMARY_KEY] 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
ALTER TABLE [dbo].[TABLE_USERS] WITH CHECK ADD CONSTRAINT [TABLE_USERS_TABLE_COMPANY_FK] FOREIGN KEY([COMPANY_FK])
REFERENCES [dbo].[TABLE_COMPANIES] ([PRIMARY_KEY])
GO
ALTER TABLE [dbo].[TABLE_USERS] CHECK CONSTRAINT [TABLE_USERS_TABLE_COMPANY_FK]
GO
ALTER TABLE [dbo].[TABLE_USERS] WITH CHECK ADD CONSTRAINT [TABLE_USERS_TABLE_LANGUAGE_FK] FOREIGN KEY([LANGUAGE_FK])
REFERENCES [dbo].[TABLE_LANGUAGES] ([PRIMARY_KEY])
GO
ALTER TABLE [dbo].[TABLE_USERS] CHECK CONSTRAINT [TABLE_USERS_TABLE_LANGUAGE_FK]
GO
ALTER TABLE [dbo].[TABLE_USERS] WITH CHECK ADD CONSTRAINT [TABLE_USERS_TABLE_USERS_FK] FOREIGN KEY([CHANGE_USER_FK])
REFERENCES [dbo].[TABLE_USERS] ([PRIMARY_KEY])
GO
ALTER TABLE [dbo].[TABLE_USERS] CHECK CONSTRAINT [TABLE_USERS_TABLE_USERS_FK]
Ich habe herausgefunden, dass es Möglichkeiten in MS SQL 2005 gibt, durch den Einsatz von IGNORE_CONSTRAINTS die ForeignKey-Prüfungen abzuschalten, nur habe ich es damit nicht hinbekommen. Es lag aber eher daran, dass ich kein Datenbank-Profi bin, als dass die Funktionen von MS SQL es nicht schaffen würden.
Kann mir vielleicht jemand helfen und mitteilen, wie ich in eine Tabelle wie hier im Beispiel einen Datensatz einfüge, obwohl die ForeignKey-Prüfung zum Zeitpunkt der Datensatzerstellung fehlschlägt?
Ich denke mal, dass mein Konzept noch nicht ausgereift genug ist.
Außerdem war die Integration solcher Prüfungen dafür gedacht, dass man nicht einfach in der Datenbank einen Datensatz anlegen kann, ohne ordnungsgemäß zu referenzieren.
Ich verstehe leider nur noch nicht ganz, wie man nun mit der Prüfung umgeht und überhaupt einen Datensatz anlegen kann.
Vielen Dank schonmal im Voraus.
ich habe eine Datenbank erstellt und möchte in die Benutzertabelle nun gerne Daten eintragen.
Die Beziehungen verschiedener Tabellen zueinander ist bewußt gewählt. Nur habe ich mir dadurch selbst das Leben schwer gemacht, weil sobald ein ForeignKey als PrimaryKey in einer anderen Tabelle noch nicht existiert, dieser Datensatz nicht angelegt wird.
Das Script für die Erstellung der Benutzertabelle siet wie folgt aus:
CREATE TABLE [dbo].[TABLE_USERS](
[PRIMARY_KEY] [bigint] IDENTITY(1,1) NOT NULL,
[FIRST_NAME] [nchar](50) NOT NULL,
[LAST_NAME] [nchar](50) NOT NULL,
[COMPANY_FK] [bigint] NOT NULL,
[LANGUAGE_FK] [bigint] NOT NULL,
[FIRST_MASK] [bigint] NULL,
[CREATE_TIMESTAMP] [datetime] NOT NULL,
[CHANGE_USER_FK] [bigint] NOT NULL,
[CHANGE_IP] [nchar](15) NOT NULL,
[CHANGE_SUBNET_MASK] [nchar](15) NOT NULL,
[CHANGE_GATEWAY] [nchar](15) NOT NULL,
[CHANGE_TIMESTAMP] [datetime] NOT NULL,
CONSTRAINT [TABLE_USERS_PK] PRIMARY KEY CLUSTERED
(
[PRIMARY_KEY] 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
ALTER TABLE [dbo].[TABLE_USERS] WITH CHECK ADD CONSTRAINT [TABLE_USERS_TABLE_COMPANY_FK] FOREIGN KEY([COMPANY_FK])
REFERENCES [dbo].[TABLE_COMPANIES] ([PRIMARY_KEY])
GO
ALTER TABLE [dbo].[TABLE_USERS] CHECK CONSTRAINT [TABLE_USERS_TABLE_COMPANY_FK]
GO
ALTER TABLE [dbo].[TABLE_USERS] WITH CHECK ADD CONSTRAINT [TABLE_USERS_TABLE_LANGUAGE_FK] FOREIGN KEY([LANGUAGE_FK])
REFERENCES [dbo].[TABLE_LANGUAGES] ([PRIMARY_KEY])
GO
ALTER TABLE [dbo].[TABLE_USERS] CHECK CONSTRAINT [TABLE_USERS_TABLE_LANGUAGE_FK]
GO
ALTER TABLE [dbo].[TABLE_USERS] WITH CHECK ADD CONSTRAINT [TABLE_USERS_TABLE_USERS_FK] FOREIGN KEY([CHANGE_USER_FK])
REFERENCES [dbo].[TABLE_USERS] ([PRIMARY_KEY])
GO
ALTER TABLE [dbo].[TABLE_USERS] CHECK CONSTRAINT [TABLE_USERS_TABLE_USERS_FK]
Ich habe herausgefunden, dass es Möglichkeiten in MS SQL 2005 gibt, durch den Einsatz von IGNORE_CONSTRAINTS die ForeignKey-Prüfungen abzuschalten, nur habe ich es damit nicht hinbekommen. Es lag aber eher daran, dass ich kein Datenbank-Profi bin, als dass die Funktionen von MS SQL es nicht schaffen würden.
Kann mir vielleicht jemand helfen und mitteilen, wie ich in eine Tabelle wie hier im Beispiel einen Datensatz einfüge, obwohl die ForeignKey-Prüfung zum Zeitpunkt der Datensatzerstellung fehlschlägt?
Ich denke mal, dass mein Konzept noch nicht ausgereift genug ist.
Außerdem war die Integration solcher Prüfungen dafür gedacht, dass man nicht einfach in der Datenbank einen Datensatz anlegen kann, ohne ordnungsgemäß zu referenzieren.
Ich verstehe leider nur noch nicht ganz, wie man nun mit der Prüfung umgeht und überhaupt einen Datensatz anlegen kann.
Vielen Dank schonmal im Voraus.
Comment