繁体   English   中英

MySQL 创建具有列条件的表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM