sql约束重复
㈠ 创建一个sql约束使某列值不得重复,但如果是NULL时忽略
用unique时null也只能出现一次,只可能用自定议函数约束或触发器限制
楼主是非用约束还是用触发器也行.
trigger:
create trigger tr_T_CheckColumn on T
after insert,update
as
if exists(select 1 from inserted where Column1 is not null) and (select top 1 count(*) from inserted i inner join T on i.ID=t.ID--ID为唯一性列
group by i.ID order by desc)>1
begin
rollback tran
raiserror 50001'有重复值'
end
㈡ SQL insert into 出现重复约束,不让插入,如何去掉
SELECT
tab.name AS [表名],
chk.name AS [Check约束名],
col.name AS [列名],
chk.definition
FROM
sys.check_constraints chk
JOIN sys.tables tab
ON (chk.parent_object_id = tab.object_id)
JOIN sys.columns col
ON (chk.parent_object_id = col.object_id
AND chk.parent_column_id = col.column_id)
你可以通过上面这个语句,看看 那个表里面, 有没有其他额外的 Check。
或者通过下面的这个语句,查询 那个表上面, 有没有什么触发器 限制了你的操作。
select
tri.name AS TriggerName,
tri.is_disabled AS IsDisable,
tri.is_instead_of_trigger AS IsInsteadOfTrigger,
c.text AS CreateTriggerSQL
from
sys.triggers tri LEFT OUTER JOIN
dbo.syscomments c ON tri.object_id = c.id
㈢ sql约束 大概意思就是正数不可以重复,负数可以重复
楼主 你这个需求 最好是用触发器来完成
约束没法这样判断的
如果有什么疑问可以随时来找我
㈣ sql怎么约束一个字段的信息不能与另一个字段的信息重复
我认为最好少用约束,你想当违反约束的事件发生之后,数据库会弹出一个只有程序员才能看懂的出错对话框.用户根本不知道发生了什么事.一个段与另外一个字段不能重复,这样的问题,在数据编辑时就可以解决掉.比如
if A信息=B信息 then
begin
showessage(' 某信息与某信息不能重复,请重新输入!');
exit;
end;
showessage(' 某信息与某信息不能重复,请重新输入!');是不是比数据库给出的出错的对话框好懂多了呢?
㈤ sql2008如何用check约束学号不能重复
学号一般你可以设置为自增长的 那就不会出现重复了啊 自增长代码为 identity(起始值,一次增加多少)
㈥ SQLServer2000约束表达式 约束一个字段的值,如果有相同的值录入就覆盖
这不是约束,应该是触发器吧,一条记录插入的时候先判断表中是不是已经有了与这个字段值相等记录,如果有的话就删除这条记录,然后再插入,如果没有直接插入即可。你说的是这个意思吧?
㈦ SQL语句,约束不重叠。
用触发器来做检查:
CREATE TRIGGER tr_iu_reservation ON reservations
FOR INSERT, UPDATE AS
BEGIN
IF EXISTS (
SELECT
1
FROM
-- 数据库的表 与 本次插入/更新的数据作关联.
-- 但是排除掉 本次自己更新的这些数据.
reservations r
JOIN inserted i ON (r.reserver != i.reserver)
WHERE
( -- 检查 开始.
r.start_seat <= i.start_seat
and r.finish_seat >= i.start_seat )
OR
( -- 检查 结束.
r.start_seat <= i.finish_seat
and r.finish_seat >= i.finish_seat )
)
-- 如果存在重复的数据,那么回滚掉.
ROLLBACK;
END
go
使用约束来处理
创建函数.
CREATE FUNCTION reserExistsCheck(
@reserver char(10),
@start_seat INT,
@finish_seat INT
)
RETURNS INT
AS
BEGIN
-- 检查的结果.
DECLARE @CheckResult INT;
-- 开始检查:
IF EXISTS (
SELECT
1
FROM
reservations r
WHERE
r.reserver != @reserver
AND
(
( -- 检查 开始.
r.start_seat <= @start_seat
and r.finish_seat >= @start_seat )
OR
( -- 检查 结束.
r.start_seat <= @finish_seat
and r.finish_seat >= @finish_seat )
)
)
BEGIN
-- 存在有重复的数据.
SET @CheckResult = 1;
END
ELSE
BEGIN
-- 不存在有重复的数据.
SET @CheckResult = 0;
END
-- 处理完毕. 返回.
RETURN @CheckResult;
END;
GO
-- 为表新增加约束.
ALTER TABLE reservations
ADD CONSTRAINT reservations_check
CHECK (dbo.reserExistsCheck(reserver, start_seat, finish_seat) = 0);
GO
㈧ SQL server语句所有的约束条件
1、主键约束(Primary Key constraint):要求主键列数据唯一,并且不允许为空。
2、唯一约束(Unique constraint):要求该列唯一,允许为空,但只能出现一个空值。
3、检查约束(Check constraint):某列取值范围限制,格式限制等,如有关年龄、邮箱(必须有@)的约束。
4、默认约束(Default constraint):某列的默认值,如在数据库里有一项数据很多重复,可以设为默认值。
5、外键约束(Foreign Key constraint):用于在两个表之间建立关系,需要指定引用主表的哪一列。
(8)sql约束重复扩展阅读:
对于存在外键约束的表,如果进行删除非空的外键,可能会出现错误。 如果在 FOREIGN KEY 约束的列中输入非 NULL 值,则此值必须在被引用的列中存在,否则将返回违反外键约束的错误信息。
列级 FOREIGN KEY 约束的 REFERENCES 子句仅能列出一个引用列,且该列必须与定义约束的列具有相同的数据类型。表级 FOREIGN KEY 约束的 REFERENCES 子句中引用列的数目必须与约束列列表中的列数相同。每个引用列的数据类型也必须与列表中相应列的数据类型相同。
㈨ SQL约束使某列值不得重复,但如果是NULL时忽略
如果是唯一约束的话,只能有1行可以为NULL,否则就不是唯一了