MySQL FK auf Eintrag mit composed PK

Nobody23

Grünschnabel
Hallo

Ich will von einer Tabelle aus einen FK auf eine andere Tabelle erstellen, welche einen zusammengesetzten PK hat

Meine Tabelle mit zusammengesetztem PK:
Code:
CREATE TABLE SzsStatistic.Tribalmember (
	Tribal_ID 	INTEGER UNSIGNED			NOT NULL REFERENCES SzsStatistic.Tribal(Tribal_ID) ON DELETE CASCADE ON UPDATE CASCADE,
	User_ID 	INTEGER UNSIGNED			NOT NULL REFERENCES SzsStatistic.SzsUser(User_ID) ON DELETE CASCADE ON UPDATE CASCADE,
	isMemberActive BOOLEAN 	NOT NULL,
	PRIMARY KEY (Tribal_ID, User_ID)
);


Hier die andere Tabelle:
Code:
CREATE TABLE SzsStatistic.StatisticRecord (
	Record_ID INTEGER UNSIGNED 	 PRIMARY KEY AUTO_INCREMENT,
	Tribal_ID 	INTEGER UNSIGNED		UNIQUE	NOT NULL REFERENCES SzsStatistic.Tribalmember(Tribal_ID) ON DELETE CASCADE ON UPDATE CASCADE,
	User_ID 	INTEGER UNSIGNED		UNIQUE	NOT NULL REFERENCES SzsStatistic.Tribalmember(User_ID)ON DELETE CASCADE ON UPDATE CASCADE,
	Points 	INTEGER UNSIGNED NOT NULL,
	LogDate TimeStamp 	NOT NULL
);

Wie kann ich sicherstellen, dass in der StatisticRecord Tabelle die Kombination aus den 2 FK feldern zusammen in Tribalmember existieren und einmalig sind?

Oder gibt es noch eine andere Lösung dafür?

Gruss
Nobody
 
Moin nobody23,

versuche es so:
SQL:
CREATE TABLE SzsStatistic.StatisticRecord (
	Record_ID INTEGER UNSIGNED 	 PRIMARY KEY AUTO_INCREMENT,
	Tribal_ID 	INTEGER UNSIGNED		UNIQUE 	NOT NULL, 
	User_ID 	INTEGER UNSIGNED		UNIQUE	       NOT NULL,
	Points 	INTEGER UNSIGNED NOT NULL,
	LogDate TimeStamp 	NOT NULL,
        UNIQUE (TRIBAL_ID, ISER_ID)
        FOREIGN KEY (TRIBAL_ID,  User_ID)
               REFERENCES SzsStatistic.Tribalmember( Tribal_ID, User_ID)
                   ON DELETE CASCADE 
                ON UPDATE CASCADE
);

Bei der UNIQUE-Contraint wird zusätzlich noch ein gleich aussehener Unique-index benötigt, bei beiden Constraints wird InnoDB unterstellt.

Grüße
Biber
 
Zurück