Mailing List
Home
Forum Home
MySQL General - General MySQL discussion
MySQL++ - Programming with the C++ API to MySQL
MaxDB - Everything about MaxDB, formerly known as SAP DB
ODBC - ODBC with the MySQL Connector/ODBC driver
MySQL on Win32 - Runing MySQL on Windows 9x/Me/NT/2000/XP
Java Help - Mostly related to the MySQL Connector/J driver
Perl - Perl support for MySQL with DBI and DBD::mysql
GUI - MySQL GUI Tools
Announcement
Subjects
Subject: mysql openssl Question
ERROR 1045: Access denied for user: 'root@localhost ' (Using
password: NO)
Update one field with more fields from another table
Subject: Getting Identity after INSERT
ERROR 2002: Can 't connect to local MySQL server through socket
mysql test 4 1 fails with the gis test
Subject: MySQL Cluster Software
Downgrade Mysql from 4 to 3 23
Mysql 4 0 Oracle Stored Procedure Trigger Conversion
Can 't access mysql after kernel upgrade
Executing MySQL Commands From Within C Program
Comparing and writing out BLOBS
Subject: Re: Preventing Duplicate Entries
FULLTEXT query format question
Strange behavior, Table Level Permission
Does the binary log enabling affect the MySQL performances?
mysql:it 's a db not a dbms how it 's possible?!
mysql have same function mthod as Oracle decode()
 
Subject: Re: Foreign keys on non-unique columns (problem)

Subject: Re: Foreign keys on non-unique columns (problem)

2007-11-04       - By Martijn Tonies

 Back
Hi Yves,

> I have a problem with my foreign keys. I have the following two tables:
>
> CREATE TABLE "keylist" (
>     "KeylistId" INTEGER NOT NULL,
>     "UserId" INTEGER NOT NULL,
>     PRIMARY KEY (KeylistId, UserId));
>
> CREATE TABLE "user" (
>     "UserId" INTEGER NOT NULL PRIMARY KEY,
>     "AdditionalKeylist" INTEGER);
>
> A keylist stores multiple user IDs for each keylist ID. A user has a
> reference to one keylist to keep multiple additional keys. (My "key" is
> the same as a "user ID".)
>
> Now I have added this foreign key constraint:
>
> ALTER TABLE "user" ADD FOREIGN KEY ("AdditionalKeylist") REFERENCES
> "keylist" ("KeylistId") ON DELETE SET NULL;

This cannot work. The column in KEYLIST to which you are
pointing should have a unique value, that means either a primary
key or unique constraint.

Given that the constraint on KEYLIST means that you can have
multiple KEYLIST entries for each USERID value, how is a
foreign key constraint supposed to be pointing to a single entry
in KEYLIST? It cannot, unless you're referencing a unique (pair)
value.

What is it exactly that you want to store?

Martijn Tonies
Database Workbench - tool for InterBase, Firebird, MySQL, NexusDB, Oracle &
MS SQL Server
Upscene Productions
http://www.upscene.com
My thoughts:
http://blog.upscene.com/martijn/
Database development questions? Check the forum!
http://www.databasedevelopmentforum.com


--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/mysql?unsub=mysql@(protected)