2014-03-05 2 views
0

MySQL에서는 애플리케이션이 액세스 할 수 있고 필요한 경우 변경할 수있는 정적 값 하나만 저장하는 테이블이 필요합니다. 이 목적을 위해 나는 다른 행을 삽입 할 수 없도록해야합니다.삽입이 허용되지 않은 MySQL 테이블을 생성하는 방법

그래서 업데이트 작업을 허용하지만 삽입 및 삭제 작업이없는 테이블을 만들어야합니다. 트리거에서 테이블의 크기를 확인하고> 1이 작업을 취소하는 것보다 다른 방법이 있습니까?

+0

업데이트 또는 삽입을 원하지 않으면 어떻게 변경할 수 있습니까? –

+0

업데이트가 허용되어야하며, 삽입 및 삭제 만 허용되지 않습니다. – Jbartmann

+1

테이블의 정확한 레코드 수를 이미 알고 있다면 쿼리를 확인하기 위해 쿼리를 간단하게 수행 할 수 있으며 미리 정의 된 숫자 이상을 반환하면 조작. – har2vey

답변

1

. 나는 좋은 해결책이라고 생각하지만 기존 사용자를 통해 여러 테이블에 액세스하고있어 다른 테이블을 만들고 싶지 않았기 때문에 두 개의 트리거를 사용하여 문제를 해결했습니다.

트리거 : On_Insert_Check_Count

BEGIN 

IF ((SELECT COUNT(*) FROM oe_last_tabkey) >= 1) THEN 
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = "DIE: Only Update allowed on this table."; 
END IF; 

END 

트리거 :

그래서 여기 내 솔루션입니다 On_Delete이 솔루션을

BEGIN 

SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = "DIE: Only Update allowed on this table."; 

END 

, 매번 모든 사용자가 분이만큼 (삽입하려고 1 행 존재) 또는 삭제하기 위해, MySQL은 메시지와 함께 "DIE :이 테이블에서만 업데이트 허용"작업을 취소합니다.

1

테이블을 상호 작용하는 데 사용되는 mysql 사용자에게 원하는 권한을 지정하여 제어 할 수 있습니다.

예를 들어 테이블을 만들고 한 사용자에게 값을 한 번 입력 한 다음 업데이트 권한 만있는 다른 사용자를 사용할 수 있습니다.

당신이 읽을 수있는 더 here 가능한 솔루션 스테판하여 다른 사용자를 작성하고 해당 테이블에서 행을 삽입하거나 삭제할 수 없습니다 특권을 지정하는 것입니다 언급 한 바와 같이

관련 문제