2009-12-19 3 views
2

AutoIncremented 열 (ID)이 있는데이 열에 데이터베이스 만 채워지도록 제한하고 싶습니다. 그것에 대한 제약이 있습니까?AutoIncremented 열이 외부 값을 허용하지 않도록 제한 할 수 있습니까?

+0

"외부" –

+0

에 대한 설명을 부탁드립니다. 잘못된 데이터가있는 해당 테이블에 대한 INSERT가 실패합니다. – ripper234

+0

난 항상 당신이 자동 증분으로 열을 정의하고 삽입과 열을 설정하려고하면 생각 .. 어떤 대량 가져 오기 스크립트는 그 모든 데이터를 설정하기 전에 해제 .. 왜 그래도 될 수 있습니다. 네가 이걸 해보려 고 노력했다고 생각하니? 무슨 SQL 맛? – Charles

답변

1

이렇게 할 수있는 선언적 제약이 없다고 생각합니다.

당신은 예를 들어, 트리거를 사용하여 수행 할 수 있습니다

DELIMITER // 

CREATE TRIGGER ForceId BEFORE INSERT ON MyTable 
FOR EACH ROW 
BEGIN 
    SET NEW.id = DEFAULT; 
END // 

DELIMITER ; 

난 그냥 MySQL을 5.1.41에이 테스트가 작동하는 것 같다. 내 INSERT 문에 id의 값을 지정하면 내 값을 무시하고 새 대리 키 값을 생성합니다.

INSERT INTO MyTable (id, name) VALUES (DEFAULT, 'Bill'); 
INSERT INTO MyTable (id, name) VALUES (123, 'John'); 
SELECT * FROM MyTable; 
+----+-------+ 
| id | name | 
+----+-------+ 
| 1 | bill | 
| 2 | john | 
+----+-------+ 
관련 문제