Sql Server中怎么设置一个字段的值小于另外一个字段的值??

时间:2021-07-26 13:33:49
假设我有一张表  stu( a int , b int );
然后我要求在建表的时候字段 b 的值必须小于字段 a 的值,这个约束怎么建立啊????

8 个解决方案

#1


USE ForTest
GO 
IF OBJECT_ID('dbo.stu') IS NOT NULL
DROP TABLE dbo.stu
GO
CREATE TABLE dbo.stu
(
a INT,
b INT
)
ALTER TABLE dbo.stu
ADD CONSTRAINT CH_D_T CHECK(b <= a)
GO
INSERT INTO dbo.stu

这种约束是表级约束

#2


create table stu
(
   a int not null ,
   b int not null
)
alter table stu add constraint ck_a_b check(a>b)

#3


引用 1 楼 GiveMePressure 的回复:
SQL code?1234567891011121314USE ForTestGO IF OBJECT_ID('dbo.stu') IS NOT NULL    DROP TABLE dbo.stuGOCREATE TABLE dbo.stu(    a    INT,    b    INT)ALTER TABLE dbo.stu    ADD CONSTRAINT C……


好吧  谢谢大家O(∩_∩)O哈!  着急写错了,原题是对于两个时间类型的字段,beginTime 和 endTime 然后要求是 endTime 要大于 beginTime 而且是精确到小时!!! Sql Server中怎么设置一个字段的值小于另外一个字段的值??

一时着急,大家看看这个怎么搞??当然也是需要建约束的!!

#4


引用 2 楼 qujunchang 的回复:
create table stu
(
   a int not null ,
   b int not null
)
alter table stu add constraint ck_a_b check(a>b)


请看看楼上问题补充,然后再帮我看看O(∩_∩)O哈!  Sql Server中怎么设置一个字段的值小于另外一个字段的值??

#5


alter table stu 
add constraint ck_time check(DATEDIFF(hh,begintime,endtime)>0)

#6


引用 5 楼 szm341 的回复:
alter table stu 
add constraint ck_time check(DATEDIFF(hh,begintime,endtime)>0)


这个样子的话 貌似这条语句:
add constraint ck_time check( endtime>begintime )
也是可以的啊?

请详细解析下看看 谢谢O(∩_∩)O哈!

#7


哦,我没理解你说的精确到小时是指的什么
我做的时间比较,endtime>begintime至少1小时呵呵

#8


引用 7 楼 szm341 的回复:
哦,我没理解你说的精确到小时是指的什么
我做的时间比较,endtime>begintime至少1小时呵呵


嗯  是的  我也不太理解精确到1小时表示什么意思,后来我们就做成了你开始写的那种方式,然后就可以随便是神马意思了  O(∩_∩)O哈哈~ 


还是谢谢你O(∩_∩)O哈!

#1


USE ForTest
GO 
IF OBJECT_ID('dbo.stu') IS NOT NULL
DROP TABLE dbo.stu
GO
CREATE TABLE dbo.stu
(
a INT,
b INT
)
ALTER TABLE dbo.stu
ADD CONSTRAINT CH_D_T CHECK(b <= a)
GO
INSERT INTO dbo.stu

这种约束是表级约束

#2


create table stu
(
   a int not null ,
   b int not null
)
alter table stu add constraint ck_a_b check(a>b)

#3


引用 1 楼 GiveMePressure 的回复:
SQL code?1234567891011121314USE ForTestGO IF OBJECT_ID('dbo.stu') IS NOT NULL    DROP TABLE dbo.stuGOCREATE TABLE dbo.stu(    a    INT,    b    INT)ALTER TABLE dbo.stu    ADD CONSTRAINT C……


好吧  谢谢大家O(∩_∩)O哈!  着急写错了,原题是对于两个时间类型的字段,beginTime 和 endTime 然后要求是 endTime 要大于 beginTime 而且是精确到小时!!! Sql Server中怎么设置一个字段的值小于另外一个字段的值??

一时着急,大家看看这个怎么搞??当然也是需要建约束的!!

#4


引用 2 楼 qujunchang 的回复:
create table stu
(
   a int not null ,
   b int not null
)
alter table stu add constraint ck_a_b check(a>b)


请看看楼上问题补充,然后再帮我看看O(∩_∩)O哈!  Sql Server中怎么设置一个字段的值小于另外一个字段的值??

#5


alter table stu 
add constraint ck_time check(DATEDIFF(hh,begintime,endtime)>0)

#6


引用 5 楼 szm341 的回复:
alter table stu 
add constraint ck_time check(DATEDIFF(hh,begintime,endtime)>0)


这个样子的话 貌似这条语句:
add constraint ck_time check( endtime>begintime )
也是可以的啊?

请详细解析下看看 谢谢O(∩_∩)O哈!

#7


哦,我没理解你说的精确到小时是指的什么
我做的时间比较,endtime>begintime至少1小时呵呵

#8


引用 7 楼 szm341 的回复:
哦,我没理解你说的精确到小时是指的什么
我做的时间比较,endtime>begintime至少1小时呵呵


嗯  是的  我也不太理解精确到1小时表示什么意思,后来我们就做成了你开始写的那种方式,然后就可以随便是神马意思了  O(∩_∩)O哈哈~ 


还是谢谢你O(∩_∩)O哈!