[SQL] 설정 제한 SQL에서 테이블 행에 대한
SQL설정 제한 SQL에서 테이블 행에 대한
내 테이블의 행에 대한 제한을 설정하고 싶습니다. 어떻게하니?
내 테이블의 예를 들어 50 행.
해결법
-
==============================
1.테이블에 AFTER 삽입 트리거를 만듭니다. 여기에 귀하의 요구 사항과 상대적으로 효과적 일 것입니다 무언가이다 :
테이블에 AFTER 삽입 트리거를 만듭니다. 여기에 귀하의 요구 사항과 상대적으로 효과적 일 것입니다 무언가이다 :
create trigger LimitTable on YourTableToLimit after insert as declare @tableCount int select @tableCount = Count(*) from YourTableToLimit if @tableCount > 50 begin rollback end go
-
==============================
2.CHECK 제한을 사용합니다. 예컨대 :
CHECK 제한을 사용합니다. 예컨대 :
CREATE TABLE t1 (x TINYINT NOT NULL UNIQUE CHECK (x BETWEEN 1 AND 50));
-
==============================
3.당신은 쿼리의 결과를 제한을 언급하고 있는가?
당신은 쿼리의 결과를 제한을 언급하고 있는가?
이 경우, SQL Server 2008에 당신은 TOP을 사용할 수 있습니다
SELECT TOP 50 * FROM Table
실제로 데이터베이스 테이블에 레코드의 양을 제한에서 찾고 있다면, 다음 트리거에서 IF 문은 @Shark가 게시 것처럼, 내 해결책이 될 것입니다.
-
==============================
4.당신이 원하는 것은 INSTEAD INSERT의 트리거를 가지고입니다 수표 현재의 행 #. 이미 50 경우 RAISERROR를 사용하여 오류가 발생합니다. 그렇지 않다면, 당신은 단지 기록을 삽입합니다.
당신이 원하는 것은 INSTEAD INSERT의 트리거를 가지고입니다 수표 현재의 행 #. 이미 50 경우 RAISERROR를 사용하여 오류가 발생합니다. 그렇지 않다면, 당신은 단지 기록을 삽입합니다.
이 같이 :
CREATE TRIGGER checktablelimit ON yourtable INSTEAD OF INSERT AS DECLARE @currentCount INT SELECT @currentCount = COUNT(*) FROM yourtabletolimit IF @currentCount = 50 BEGIN RAISERROR ('Table already has 50 records', 11, 1); END ELSE BEGIN INSERT INTO yourtable (field1, field2, field3) SELECT field1, field2, field3 FROM inserted END GO
from https://stackoverflow.com/questions/7930286/set-limit-for-a-table-rows-in-sql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 선택 쿼리 내부에 저장 프로 시저를 실행하는 방법 (0) | 2020.06.12 |
---|---|
[SQL] @ 기호 - MySQL의에서 재귀 SELECT 질의에 대한 해결책? (0) | 2020.06.12 |
[SQL] 날짜 범위에있는 모든 날짜 SQL 서버에서 가져 오기 (0) | 2020.06.12 |
[SQL] 외래 키와 기본 키에 포스트 그레스 및 인덱스 (0) | 2020.06.12 |
[SQL] 행에 열 및 열로 MySQL의 트랜스 행 [중복] (0) | 2020.06.12 |