2012-04-03 4 views
0

다음 표의 데이터의 유효성을 검사해야합니다. (업데이트 : 테이블 M의 삽입 및 업데이트 트리거)infoschema.columns에 대한 데이터 확인

create table M (Column_Name sysname primary key, FirstValue varchar(8000)) 

표는 Column_Name의 모든 값이 (select column_name from information_schema.columns where table_name = 'T')에 있는지 확인하기 위해 트리거를 가지고있다.

에 아무런 문제없이 M.FirstValue을 삽입 할 수있는 가장 좋은 방법은 무엇입니까? 제 3 자 함수가 (Value, Data_type, Max_..._length, etc)의 매개 변수를 받아 들일 수 있습니까? 데이터 형식 정보는 information_schema.columns에 의해 제공 될 수 있습니까?


**

나는 FirstValue의 값이 이름이 COLUMN_NAME 컬럼에 저장되는 컬럼에 삽입 될 수 있도록 노력하고 있어요.

+0

정확히 무엇을하려고합니까? FirstValue의 값을 Column_Name 열에 저장된 이름에 삽입 할 수 있는지 확인하려고합니까? – Pondlife

+0

@Pondlife 예, 그게 바로 제가하려는 일입니다. – ca9163d9

답변

1

질문을 명확히 해 주셔서 감사합니다. 그렇게 할 수있는 내장 함수 나 프로 시저가 없으므로 직접 작성해야합니다. 한 가지 방법은 CAST 값을 열과 동일한 데이터 형식으로 사용하는 것입니다. 변환 오류가 발생하면 INSERT이 실패한다는 것을 알게됩니다.

값이 데이터 형식과 호환되는 경우에도 테이블에 CHECK 제약 조건 또는 트리거가있어 다른 이유로 삽입되지 못하기 때문에 쉽고 안정적인 방법은 없습니다. 그리고 모든 값을 문자열로 저장하기 때문에 datetime으로의 변환과 같은 잠재적 인 문제가 있습니다. 다른 언어 또는 날짜 형식 옵션으로 인해 다른 사람이 실패 할 수도 있습니다.