복붙노트

[SQL] 설정 제한 SQL에서 테이블 행에 대한

SQL

설정 제한 SQL에서 테이블 행에 대한

내 테이블의 행에 대한 제한을 설정하고 싶습니다. 어떻게하니?

내 테이블의 예를 들어 50 행.

해결법

  1. ==============================

    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. ==============================

    2.CHECK 제한을 사용합니다. 예컨대 :

    CHECK 제한을 사용합니다. 예컨대 :

    CREATE TABLE t1 (x TINYINT NOT NULL UNIQUE CHECK (x BETWEEN 1 AND 50));
    
  3. ==============================

    3.당신은 쿼리의 결과를 제한을 언급하고 있는가?

    당신은 쿼리의 결과를 제한을 언급하고 있는가?

    이 경우, SQL Server 2008에 당신은 TOP을 사용할 수 있습니다

    SELECT TOP 50 *
    FROM Table
    

    실제로 데이터베이스 테이블에 레코드의 양을 제한에서 찾고 있다면, 다음 트리거에서 IF 문은 @Shark가 게시 것처럼, 내 해결책이 될 것입니다.

  4. ==============================

    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 
    
  5. from https://stackoverflow.com/questions/7930286/set-limit-for-a-table-rows-in-sql by cc-by-sa and MIT license