[英]MySQL create table with condition on column
如果 CustomerType=Guest,我想创建一个客户表并希望限制 SponsorID 列而不是 null。
CREATE TABLE `customers` (
`CustomerID` INT(11) NOT NULL AUTO_INCREMENT,
`CustomerType` VARCHAR(45) NOT NULL,
`WM_Status` TINYINT(1) NOT NULL,
`SponsorID` INT(11) NULL,
`F_Name` VARCHAR(45) NOT NULL,
`L_Name` VARCHAR(45) NOT NULL,
`Street` VARCHAR(80) NULL DEFAULT NULL,
`City` VARCHAR(45) NULL DEFAULT NULL,
`State` CHAR(4) NULL DEFAULT NULL,
`Zip` INT(11) NULL DEFAULT NULL,
`WorkNum` VARCHAR(45) NULL DEFAULT NULL,
`HomeNum` VARCHAR(45) NOT NULL,
`DOB` DATE NOT NULL,
PRIMARY KEY (`CustomerID`),
UNIQUE INDEX `CustomerID_UNIQUE` (`CustomerID` ASC) ,
INDEX `SponsorID` (`SponsorID` ASC) ,
CONSTRAINT `SponsorID`
FOREIGN KEY (`SponsorID`)
REFERENCES `project1_team3`.`customers` (`CustomerID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;
请建议。
任何帮助,将不胜感激。
谢谢,
您可以添加一个像这样的约束。
CONSTRAINT SponsorIDCheck CHECK ((`CustomerType` != 'Guest') OR (`CustomerType` = 'Guest' AND `SponsorID` IS NOT NULL))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.