2011-11-17 106 views
1

当我在注册表上编辑UID时,客户端表上的parentid列应该改变。这不是那样做的。有什么建议么?MySQL ON UPDATE/ON DELETE CASCADE NOT CASCADEING

客户

CREATE TABLE `clients` (
    `id` INT(255) NOT NULL AUTO_INCREMENT, 
    `fname` VARCHAR(255) NOT NULL COLLATE 'latin1_bin', 
    `lname` VARCHAR(255) NOT NULL COLLATE 'latin1_bin', 
    `email` VARCHAR(255) NOT NULL COLLATE 'latin1_bin', 
    `phone` VARCHAR(255) NOT NULL COLLATE 'latin1_bin', 
    `parentid` INT(255) NOT NULL, 
    `hphone` VARCHAR(12) NOT NULL COLLATE 'latin1_bin', 
    `postal` VARCHAR(10) NOT NULL COLLATE 'latin1_bin', 
    `city` VARCHAR(255) NOT NULL COLLATE 'latin1_bin', 
    `address` VARCHAR(255) NOT NULL COLLATE 'latin1_bin', 
    `province` VARCHAR(255) NOT NULL COLLATE 'latin1_bin', 
    `country` VARCHAR(255) NOT NULL COLLATE 'latin1_bin', 
    `sms` INT(1) NOT NULL, 
    `semail` INT(1) NOT NULL, 
    `gender` VARCHAR(6) NOT NULL COLLATE 'latin1_bin', 
    `bday` VARCHAR(255) NOT NULL COLLATE 'latin1_bin', 
    `bmonth` VARCHAR(255) NOT NULL COLLATE 'latin1_bin', 
    PRIMARY KEY (`id`), 
    INDEX `parentid` (`parentid`), 
    CONSTRAINT `FK_clients_signup` FOREIGN KEY (`parentid`) REFERENCES `signup` (`UID`) ON UPDATE CASCADE ON DELETE CASCADE 
) 
COLLATE='latin1_bin' 
ENGINE=InnoDB 
ROW_FORMAT=DEFAULT 
AUTO_INCREMENT=31751 

注册

CREATE TABLE `signup` (
    `UID` INT(255) NOT NULL AUTO_INCREMENT, 
    `username` VARCHAR(80) NOT NULL DEFAULT '' COLLATE 'latin1_bin', 
    `hash` VARCHAR(255) NOT NULL COLLATE 'latin1_bin', 
    `email` VARCHAR(80) NOT NULL DEFAULT '' COLLATE 'latin1_bin', 
    `fname` VARCHAR(40) NOT NULL DEFAULT '' COLLATE 'latin1_bin', 
    `lname` VARCHAR(40) NOT NULL DEFAULT '' COLLATE 'latin1_bin', 
    `address` TEXT NOT NULL COLLATE 'latin1_bin', 
    `city` VARCHAR(80) NOT NULL DEFAULT '' COLLATE 'latin1_bin', 
    `province` VARCHAR(255) NOT NULL COLLATE 'latin1_bin', 
    `zip` VARCHAR(30) NOT NULL DEFAULT '' COLLATE 'latin1_bin', 
    `country` VARCHAR(80) NOT NULL DEFAULT '' COLLATE 'latin1_bin', 
    `company` TEXT NOT NULL COLLATE 'latin1_bin', 
    `addtime` VARCHAR(20) NOT NULL DEFAULT '' COLLATE 'latin1_bin', 
    `logintime` VARCHAR(20) NOT NULL DEFAULT '' COLLATE 'latin1_bin', 
    `user_ip` VARCHAR(16) NOT NULL DEFAULT '' COLLATE 'latin1_bin', 
    `pwd` VARCHAR(60) NOT NULL DEFAULT '' COLLATE 'latin1_bin', 
    `credits` INT(255) NOT NULL, 
    `plan` INT(255) NOT NULL DEFAULT '1', 
    `reset` VARCHAR(255) NOT NULL COLLATE 'latin1_bin', 
    `expires` VARCHAR(255) NOT NULL COLLATE 'latin1_bin', 
    `afid` INT(255) NOT NULL, 
    `industryid` INT(255) NOT NULL, 
    PRIMARY KEY (`UID`), 
    UNIQUE INDEX `email` (`email`), 
    UNIQUE INDEX `username` (`username`), 
    INDEX `industryid` (`industryid`), 
    INDEX `afid` (`afid`), 
    INDEX `plan` (`plan`), 
    CONSTRAINT `FK_signup_affiliates` FOREIGN KEY (`afid`) REFERENCES `affiliates` (`afid`) ON UPDATE CASCADE ON DELETE CASCADE, 
    CONSTRAINT `FK_signup_plans` FOREIGN KEY (`plan`) REFERENCES `plans` (`pid`) ON UPDATE CASCADE ON DELETE CASCADE 
) 
COLLATE='latin1_bin' 
ENGINE=InnoDB 
ROW_FORMAT=DEFAULT 
AUTO_INCREMENT=27 
+0

_When我编辑UID上si根据你的CREATE TABLE语句,Clients.id不应该改变,而应该是Clients.parentid。 –

+0

'FOREIGN KEY(\'parentid \')REFERENCES \'signup \'(\'UID \')'确保您正在查看右列进行更改。 –

+0

对不起,我的意思是应该改变。 UID是注册的主键,需要在客户端进行更改的部分是缺省的。 –

回答

0

它可能不会改变,因为你不可能改变UID的注册表格,因为它是主键,是自动递增

+0

不是我正在寻找的东西。无论如何,它由于某种原因开始自行工作。 –