Jan K.: 1 aus 3 Feldern muss gefüllt werden

Beitrag lesen

MySQL 5.1.41

Hallo Forum,

kommen wir gleich zur Sache:

  
CREATE TABLE file (  
	fileid 			INT UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL,  
	filename_upload		varchar(255) NOT NULL,  
	filename_system		varchar(255) NOT NULL,  
	extid			INT UNSIGNED,  
	frontuseid		INT UNSIGNED,  
	userid			INT UNSIGNED DEFAULT NULL,  
	betriebid		INT UNSIGNED DEFAULT NULL,  
	unternid		INT UNSIGNED DEFAULT NULL,  
	CHECK (	(userid!=NULL AND betriebid=NULL AND unternid=NULL) OR  
			(userid=NULL AND betriebid!=NULL AND unternid=NULL) OR  
			(userid=NULL AND betriebid=NULL AND unternid!=NULL) )  
) ENGINE = InnoDB;  
  
INSERT INTO fileid VALUES(DEFAULT,"filename_upload.dat","mussichmirnochueberlegen",1,1,DEFAULT,DEFAULT,DEFAULT);  

Ich möchte erreichen, dass ein INSERT oder UPDATE auf die Tabelle file nur unter 3 Bedingungen ausgeführt wird.
Und zwar:
userid=INT betriebid=NULL unternid=NULL
ODER
userid=NULL betriebid=INT unternid=NULL
ODER
userid=NULL betriebid=NULL unternid=INT

Im die obrige Tabelle kann ich aber reinstecken was ich mag :), das check() greift nicht (scheinbar bei MySQL generell nicht nach meinen Recherchen).

Hat jemand von euch eine gescheite Idee wie ich das anstellen kann?

Grüße aus Berlin,
Jan