sql server中建表的时候怎么在一列里面去引用另一列,求大神帮忙看看这段代码该怎么该啊

create table StudentInformation(
StudentId char(8) primary key,
Name varchar(10) not null,
Gender char check(Gender in ( '男','女')),
Birthday date,
Age int check(Age=getdate()-Birthday),
Tel int,
CollegeId char(4)foreign key(CollegeId) references
CollegeInformation(CollegeId),
SpecialitiesId char(4)foreign key(SpecialitiesId)
references SpecialitiesInformation(SpecialitiesId),
Class CHAR(2),
IdentityId int,
Address varchar(20),
);
错误提示:表 'StudentInformation' 的列 'Age' 的列 CHECK 约束引用了另一列。


create table CollegeInformation(CollegeId char(4) primary key);
create table SpecialitiesInformation(SpecialitiesId char(4) primary key);
-- 
create table StudentInformation(
StudentId char(8) primary key,
Name varchar(10) not null,
Gender char check(Gender in ( '男','女')),
Birthday datetime,
Age int,
Tel int,
CollegeId char(4)foreign key(CollegeId) references
 CollegeInformation(CollegeId),
SpecialitiesId char(4)foreign key(SpecialitiesId)
 references SpecialitiesInformation(SpecialitiesId),
 Class CHAR(2),
 IdentityId int,
constraint ck_Birthday  check(Age=getdate()-Birthday),
 Address varchar(20)
);

追问

如果我不在建表的时候做约束,建好表写个触发器来根据出生日期算出年龄那这个触发器该怎么写呢

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-03-12
如果是这样的约束,不如直接写成计算字段。追问

我现在写成一个触发器了,但新问题出来了,我在插入数据的时候明明没个数据都没超过范围了怎么还是提示截断字符或是二进制数据呢

SQL server 把满足条件的另一张表中的某一列的对应数据插入到这张表...
1、首先修改表1,增加一列Z,并保存。2、执行以下语句 update aa set aa.z=bb.kfrom 表1 aa inner join 表2 bb on aa.a=bb.f and aa.b=bb.g and aa.c=bb.i

求助各位大神,sql server两表间一对多的关系,如何数据整合到一行数据...
就要在原来的语句里添加相应的项,所以要用动态SQL来实现,方法就是先把score表里的全部课程GROUP BY 出来,生成字符串形式(如‘语文,数学,英语,化学,生物’),用逗号隔开,插入到上面语句的PIVOT表达式的IN中,实现如下:

组态王怎么读取sql server的某一个数据的值然后赋值给自己定义的...
sql server的ODBC已经配置好,我可以将数据插入到数据库中,可是我怎么反把最新的某一个字段的值拿回来赋值给我定义的变量,如图所示,我一直在采集3个数据,但是我想把数据库里面第一个字段最新的值拿回来,赋值给一个组态王已经定义的内存变量(别问我问什么放进去还要拿回来,我就是想学习一下,没有...

SQL查询,一个表中有三列,而且只有一列值不为空,要求哪一列不为空,就...
select case when isnull(a,'')<>'' then a when isnull(b,'')<>'' then b when isnull(c,'')<>'' then c endfrom 表是要这样?

ORACLE怎么把查询出来的结果集的每条记录的每一列用逗号分隔,一条记录...
select replace(wmsys.wm_concat(bif_code||','||name||';'),';,',';') from BIS_BIF_INIT;这个函数你不一定有,它是建库时的其中一个关于wmsys的选项,如果没有,想想办法

怎么使SQL表中不连续的编号重新变连续
新增一列,先允许为空,然后update这列的值为rowNumber这样就是连续了,然后看看值是否正确,正确的话删除原来的列,然后把新列设为自增就完成了 ,至于二楼的方法实现也很简单:declare @newmaxid int select @newmaxid=max(id)+1 from table insert into table (id) values(@newmaxid)...

SQL中,如何查询存在一个表而不在另一个表中的数据记录
首先,在SQL中(以SQL Server为例),查询存在一个表而不在另一个表中的数据记录的方法有很多,介绍其中4种:1、方法一(仅适用单个字段):使用 not in ,比较容易理解,缺点是效率低 如:select A.ID from A where A.ID not in (select ID from B);2、方法二(适用多个字段匹配):使用 left...

在SQL SERVER2005中如何指定某列不可修改谢谢了,大神帮忙啊
sa 和 其他的 db_owner,db_admin等,都是肯定可以修改的。 只能是指定某列对某些普通用户不能修改,可以在权限管理里面详细设定好某个数据库用户或组不能修改该列,然后程序使用该数据库用户,则修改不了。(update 了这些列会抛出一个异常)希望采纳 ...

SQLSERVER中两个表联合条件查询,子查询较多,烦请大神出手看看这条SQL该...
楼主好,这样写确实是耽误效率。根据楼主的要求,其实可以先全部关联,然后where筛选后在外围汇总。具体SQL如下:select a.id,a.uName,sum(case when b._type =1 and S = 2 then s1 else 0 end )as a, sum(case when b._type =1 and S = 2 then s2 else 0 end )as b,sum(case ...

sql server 数据库中怎么批量删除连续指定行?批量修改连续行?怎么修 ...
在 SQL Server 数据库中,你可以使用 WHERE 子句来筛选特定行,并使用 UPDATE 或 DELETE 语句进行批量修改或删除操作。下面是一些示例:批量删除连续指定行: 假设你有一个名为 "TableName" 的表,其中包含一个连续的 ID 列。要删除 ID 范围在 10 到 20 的连续行,可以使用以下 SQL 语句:sql复制...

相似回答