메시지, MessageCategory, MessageStatus 및 MessageLevel의 네 가지 테이블이 있습니다.여러 테이블의 데이터가 포함 된 SQL 삽입
MessageCategory, MessageStatus 및 MessageLevel은 모두 ID (기본 키), 코드 및 설명의 세 필드로 구성됩니다. 메시지는이 세 필드를 참조하며 ID (기본 키) MessageText 및 Order를 비롯한 몇 가지 다른 데이터 필드를 포함합니다. ID 필드는 자동 증가 필드입니다.
이제 모든 기본 테이블에 4 개의 테이블을 추가하는 SQL 스크립트를 작성해야합니다. 문제는,이 스크립트를 실행할 고객에게 보낼 스크립트를 만들어야한다는 것입니다. 전체 업데이트를 수행하기 위해 좀 더 지능적인 코드를 작성할 수는 없습니다. 그리고 세 개의 테이블은 단순한 insert 문일 뿐이지 만, 더 많은 두통을 불러 일으키는 것은 Messages 테이블입니다.
색인을 제거 할 수 없으며 기본 키에 대해 1부터 계산을 시작한다고 가정 할 수 없습니다.
INSERT INTO MessageCategory (Code) Values ('Cat01');
INSERT INTO MessageStatus (Code) Values ('Status01');
INSERT INTO MessageLevel (Code) Values ('Level01');
을 그리고 메시지는 다음과 같이해야합니다 :
그래서, 예를 들어, 그녀는 일부 데이터는 비록,
INSERT INTO Messages(Category, Status, Level, MessageText, Order)
VALUES(
(SELECT Identity from MessageCategory where Code='Cat01'),
(SELECT Identity from MessageStatus where Code='Status01'),
(SELECT Identity from MessageLevel where Code='Level01'),
'Just some message',
1
);
작동하지 않습니다. 그럼,이 일을하는 속임수는 무엇입니까? (코드를 너무 읽기 좋게 유지하는 ...)
불행히도 다른 데이터베이스에 액세스 할 수 없습니다. 나는 그것을 테스트 할 수 있지만 작동하는 것 같다 후에는
난 항상 내 SQL 스크립트에서 대괄호 [] 주위의 모든 테이블과 필드 이름을 사용하는 경향이있다. 그것은 가능한 갈등을 해결합니다. 더 많은 예약어를 필드 및 테이블 이름으로 사용하는 경향이 있으므로 대괄호를 추가하는 것은 자동 작업입니다. :-) –
샘플 코드에서 그렇게 했어야합니다. 게다가. ;-) – Tomalak
그래, 나는 그 괄호가 약간을 혼동하여 실제로 그들을 제거 할 것을 기대했다. :-) –