특정 칼럼에 CHECK 제약 조건을 추가 하려고 합니다.
게시판에 자꾸 불법 사이트 홍보물이 올라와 필터를 걸었는데 알고보니 홈페이지에서 글을 올리는게 아니라
DB를 곧바로 접속 해서 인서트 구문을 날리더라구요.
암호도 바꿔봤지만 계속해서 들어옵니다.
다른 의도는 없어보이고 사이트 홍보 게시물만 계속해서 올리는데
이걸 막을 방법은 제약 조건을 DB자체에서 거는게 좋겠다고 생각 했습니다.
ALTER TABLE APTblog
ADD CONSTRAINT chkRowCount CHECK (title not like '%사다리%');
위와같은 구문을 해봤지만
메시지 547, 수준 16, 상태 0, 줄 1
ALTER TABLE 문이 CHECK 제약 조건 "chkRowCount"과(와) 충돌했습니다. 데이터베이스 "bizconsult", 테이블 "dbo.APTblog"에서 충돌이 발생했습니다.
위와같은 에러메시지만 나옵니다.
title은 varchar(255)구요
구글링은 해보니 다른 방법이 있어서
alter FUNCTION CheckFnctn(@title_str varchar(255))
RETURNS int
AS
BEGIN
declare @return_int int;
set @return_int = CHARINDEX('사다리',@title_str);
RETURN @return_int
END;
GO
ALTER TABLE APTblog
ADD CONSTRAINT chkRowCount CHECK (dbo.CheckFnctn(title) = 0);
GO
이런식으로 해보기도 했지만 결과는 같았습니다.
도대체 어느 부분에서 잘못되어 저런 에러가 나오는지 모르겠네요.
혹여 제가 제약조건을 이해 하지 못하고 몇시간째 삽질을 하고 있는지 여러분들의 고견 부탁드립니다.