重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
用触发器来实现吧,在update操作之前进行报错或者怎样 思路应该是这样的 mysql现在也支持触发器了 不过感觉一般应用上都是用来级联操作 很少用来做禁止变更,这个还是应用或者说业务层方面来限制比较好
专业领域包括成都网站制作、网站设计、购物商城网站建设、微信营销、系统平台开发, 与其他网站设计及系统开发公司不同,成都创新互联的整合解决方案结合了帮做网络品牌建设经验和互联网整合营销的理念,并将策略和执行紧密结合,为客户提供全网互联网整合方案。
Innodb存储引擎支持FOREIGN KEY和REFERENCES子句。Innodb存储引擎执行ADD [CONSTRAINT [symbol]] FOREIGN KEY (...) REFERENCES ... (...)。请参见15.2.6.4节,“FOREIGN KEY约束”。对于其它存储引擎,这些子句会被分析,但是会被忽略。对于所有的存储引擎,CHECK子句会被分析,但是会被忽略。
手册上注明:对于所有的存储引擎,CHECK子句会被分析,但是会被忽略。
也就是check是无效的,你可以用程序去实现,或者通过外键进行约束
create table 表名
(
sex char(2) check(sex='男' or sex='女') not null
)
默认性别为男的代码如下:
create table 学生表
(
学号 char(5) not null primary key,
姓名 varchar(10) not null,
性别 char(2) default '男' check (性别 in ('男','女')) //其中default '男' 就是默认性别为男。
)
扩展资料:
使用其他方法限制性别只能写男或女:
ALTER TALBE [表名]
ADD CONSTRAINT 约束名 CHECK(列名 in ('男', '女')) not null
注意:CHECK 约束可以应用于一个或者多个列,也可以将多个CHECK 约束应用于一个列。
当除去某个表时,对这个表的CHECK 约束也将同时被去除。
参考资料:百度百科-check约束
一个tinyint 字段 注释里写下 1:男 ,0: 女
或者用enum枚举型的。
年龄控制的话。。。mysql只有普通的行级约束 ,还真做不到。。你可以程序上来做么。。
create table 学生表(学号 char(10) primary key,
姓名 char(10) not null,
性别 char(2) check(性别 in('男','女')),
系 varchar(20) check(系 in('信息系','计算机科学系','数学系','管理系','中文系','外语系','法学系')),
年龄 int check(年龄 between 0 and 100))
check是没用的,
对于所有的存储引擎,CHECK子句会被分析,但是会被忽略。请参见13.1.5节,“CREATE TABLE语法”。接受这些子句但又忽略子句的原因是为了提高兼容性,以便更容易地从其它SQL服务器中导入代码,并运行应用程序,创建带参考数据的表。请参见1.8.5节,“MySQL与标准SQL的差别”。-------------摘抄自mysql5.1手册13.1.5章节
至于做限制,因为是从前台取的数据,完全可以通过在页面上加下拉菜单来控制,性别项就给出男女两种选择就可以了,
如果在数据库中用枚举列也能做到,可参照yaogogo2010的方法,
-----------------------------------------------
那我在前台取数据的时候是用什么方法呢,如果是varchar这种类型的可以用getString,int用getInt,这种类型用什么呢? 回答:int和String都可以