逻辑不对,不是空的时候唯一,是空的时候可以重复。你这是想做什么的?
创新互联从2013年成立,是专业互联网技术服务公司,拥有项目做网站、成都做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元谷城做网站,已为上家服务,为谷城各地企业和个人服务,联系电话:18980820575
这很正常啊,比如一张单据记录,有单据号,有开票日期,有开票人等字段,任何一条属性都是极其重要的,在查看明细的时候不允许任何一条为空,这个很常见的,没什么奇怪的
创建表的时候:
create table table_name
(
id serial, // ---自增,item---
username char(20) not null, //---非空---
nation char(20) default 'China' //---默认值---
)
修改表的时候:
添加:
alter table table_name add(column_name char(120) default '默认值')
修改:
alter table table_name modify(old_name char(120) default '默认值')
我用的是informix数据库,不过整体上是相同的。你可以尝试一下,或者告诉我你用的是什麽数据库,我再帮你解决。
----------------------正义的分割线----------------------
发现你的问题了,你在修改表结构的时候,要求这个栏位不为空,可是你并没有给表的这个栏位赋值,这个效果就貌似"又要马儿跑,又不给草吃"。其实你只要一开始就给这个栏位赋一个默认值就可以了,如果这个栏位的值为空了,数据库就会给这个栏位赋值为默认值,不会出现真正的为空情况。
你尝试下下面的语句:
alter table [table名] add/modify columnname datatype default(defaultvalue)
mysql根本不支持check约束,可以用触发器实现check约束想要的功能,不过当数据量过大时触发器效率不高,要想详细了解请自己百度吧
你这样设置之后,是不能插入的空(NULL),而是能插入空串(\\'\\')。
如果不让插入空串,应该使用check,例如:
CREATE TABLE table2 (
title varchar(50) NOT NULL,
message varchar(200) NOT NULL DEFAULT \\'内容\\',
msname varchar(50) NOT NULL DEFAULT \\'发布人\\',
date date NOT NULL,
PRIMARY KEY (`title`) ,
CHECK (title!=\\'\\')
) ;