AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Relation zwischen Tabellen -> FOREIGN KEY-Einschränkung??
Thema durchsuchen
Ansicht
Themen-Optionen

Relation zwischen Tabellen -> FOREIGN KEY-Einschränkung??

Ein Thema von Salomon · begonnen am 14. Nov 2007 · letzter Beitrag vom 15. Nov 2007
Antwort Antwort
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#1

Relation zwischen Tabellen -> FOREIGN KEY-Einschränkung??

  Alt 14. Nov 2007, 10:22
Datenbank: MS SQL Server Express • Version: 2005 • Zugriff über: ADO
Hallo,
ich erstelle gerade einige Beziehungen zwischen Tabellen mittles des MS SQl Server Management Studio Express.

Bei der in der Grafik rot makierten Beziehung erhalte ich den folgenden Fehler:

TB_AM_Hours-Tabelle
- Beziehung "FK_TB_AM_Hours_TB_AM_Projects" kann nicht erstellt werden.
Die ALTER TABLE-Anweisung steht in Konflikt mit der FOREIGN KEY-Einschränkung "FK_TB_AM_Hours_TB_AM_Projects". Der Konflikt trat in der "DB_ProjectPoint"-Datenbank, Tabelle "dbo.TB_AM_Projects", column 'ProjectsID' auf.

Bei der TB_AM_Programs hat dies einwandfrei funktioniert. Ich sehe hier bei der Projects Tabelle keinen Unterschied zur Programstabelle. ProjectsID ist der Primary key, ein autoinc int wert. Dieser soll mit FK_ProjectsID in der TB_AM_Hours verknüpft werden.

Der Designer möchte für die Änderung folgendes SQL Statement ausführen:

SQL-Code:
/* Überprüfen Sie das Skript ausführlich, bevor Sie es außerhalb des Datenbank-Designer-Kontexts ausführen, um potenzielle Datenverluste zu vermeiden.*/
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
GO
COMMIT
BEGIN TRANSACTION
GO
ALTER TABLE dbo.TB_AM_Hours ADD CONSTRAINT
   FK_TB_AM_Hours_TB_AM_Projects FOREIGN KEY
   (
   FK_ProjectID
   ) REFERENCES dbo.TB_AM_Projects
   (
   ProjectsID
   ) ON UPDATE NO ACTION
    ON DELETE NO ACTION
   
GO
COMMIT
Warum funktioniert das nicht? Irgendwelche "FOREIGN KEY-Einschränkung" sind mir nicht bekannt.

Thanx
Marcus
Miniaturansicht angehängter Grafiken
tb_relation_110.jpg  
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

http://www.it-adviser.net
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Relation zwischen Tabellen -> FOREIGN KEY-Einschränku

  Alt 14. Nov 2007, 12:20
Dein Problem lässt sich so aus der Ferne schwer beurteilen.
Aber für mich sieht es so aus, als ob die Beziehung schon vorhanden ist und du diese ein 2. Mal anlegen möchtest.
Ich würde auf jeden Fall das Server Management Studio verlassen, neu starten und ein Diagramm anlegen (falls noch nicht vorhanden). Im Diagramm sieht man die Beziehungen am Besten.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#3

Re: Relation zwischen Tabellen -> FOREIGN KEY-Einschränku

  Alt 14. Nov 2007, 13:41
Die Beziehung ist noch nicht vorhanden. Ich probiere diese ja in der "Diagramm Ansicht" zu erstellen.

Die Tabellen sind schon mit Daten befüllt. Könnte es daran liegen?
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

http://www.it-adviser.net
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Relation zwischen Tabellen -> FOREIGN KEY-Einschränku

  Alt 14. Nov 2007, 18:44
Zitat von Salomon:
Die Tabellen sind schon mit Daten befüllt. Könnte es daran liegen?
Ja, natürlich. Wenn Fremdschlüssel verwendet werden, die keine Entsprechung in der Mastertablle haben, kann die Beziehung nicht angelegt werden.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#5

Re: Relation zwischen Tabellen -> FOREIGN KEY-Einschränku

  Alt 15. Nov 2007, 10:42
Du hast recht, ich schreibe als Foreign Key teilweise eine 0 weg, die keine Entsprechung in der Mastertabelle hat. Nach dem löschen dieser Datensätze kann ich die Relation anlegen

Allerdings muss ich jetzt mein Softwaredesign überarbeiten. Da werde ich wohl NULL in die Primärschlüsseltabelle schreiben müssen, wenn es keine Entsprechung in der Fremtschlüsseltabelle gibt.
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

http://www.it-adviser.net
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Relation zwischen Tabellen -> FOREIGN KEY-Einschränku

  Alt 15. Nov 2007, 11:49
Hallo,

schreibe nicht NULL, sondern eine Record mit 0 als PrimKey in die Master-Tabelle.
Dann kannst du immer inner joins statt left joins benutzen,
um an die Daten zu gelangen.


Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz