mysql中的验证规则?

时间:2013-11-10 03:14:05

标签: mysql

我为计算机广告资源创建了一个数据库。我的任务是说我只能允许某些字词输入“Dell”和“IBM”这样的字段。以下是我创建表的方法:

Create table computer_inventory ( 
 assetnumber int(10) not null default 0,
 manufacturer char(3) ENUM('Dell', 'IBM', 'OtherCompany') NOT NULL default ' ', 
 originalcost decimal(12,2) not null default 0, 
 currentvalue decimal(12,2) not null default 0, 
 boughtfrom varchar(20) not null default ' ', 
 instock tinyint(1) not null default 0, 
 currentuser varchar(20) not null default ' ',
 userphonenum varchar(13) not null default ' ',
 boughtdate datetime not null default '0000-00-00'
);

现在我想让一个人只能进入制造商的“DELL”或“IBM”。

2 个答案:

答案 0 :(得分:2)

请查看此特定用例的ENUM类型。

此类型的字段允许您明确说明此列中允许的内容。对于您的情况,您需要“戴尔”和“IBM”以及您想要允许的任何其他公司。

CREATE TABLE tablename (
    company ENUM('Dell', 'IBM', 'OtherCompany')
);

此命令将创建一个包含单个字段(tablename)的表(company)。在该字段中,只允许三个值。 '戴尔','IBM'和'其他公司'。

编辑: 根据您的修改,您可以修改manufacturer行,如上所述。

manufacturer ENUM('Dell', 'IBM', 'OtherCompany') NOT NULL

文档中需要注意的一件事:

  

如果ENUM列声明为NOT NULL,则其默认值为第一个   允许值列表的元素。

在这种情况下,这意味着如果您未通过制造商,则默认为Dell

答案 1 :(得分:1)

您的代码中有两个错误:

    第三行中的
  1. 是不允许的: char(3)因为,您已声明具有更多字符的值(dell - 4个字符)
  2. 第三行
  3. 不允许:默认' ' - 因为在您声明的值列表中没有' t' &#39 ;.列表ENUM中只有值('戴尔',' IBM','其他公司')
  4. 正确的代码:

    Create table computer_inventory ( 
    assetnumber int(10) not null default 0,
    manufacturer ENUM('Dell', 'IBM', 'OtherCompany') NOT NULL, 
    originalcost decimal(12,2) not null default 0, 
    currentvalue decimal(12,2) not null default 0, 
    boughtfrom varchar(20) not null default ' ', 
    instock tinyint(1) not null default 0, 
    currentuser varchar(20) not null default ' ',
    userphonenum varchar(13) not null default ' ',
    boughtdate datetime not null default '0000-00-00')