2010-06-23 2 views
2

MySQL에서, 생성 후 기본 열을 추가하거나 자동으로 만들 수 있습니까? 간단한 개요는 다음과 같습니다.CREATE TABLE은 기본 열을 자동 추가합니까?

모든 테이블에는 데이터베이스 (created_on, created_by, row_status 등)에서 표준화 된 5 개의 필드가 있어야합니다. 때로는 개발자가이 작업을 수행하는 것을 기억하거나 일정하게 수행하지 않는 것이 어렵습니다. 앞으로 우리는 작업을 자동화하는 방법을 원합니다. 누구든지 테이블에 열 집합을 자동으로 추가하는 일종의 내부 MySQL 스크립트를 만들 수 있는지 알고 있습니까?

일부 응답을 통해 읽은 후, 나는 자동 비트 작업 (예 : 모든 테이블)을 만드는 것보다 질문 비트를 바꿔야한다고 생각하고 사용자가 트리거하여 해당 열을 검사 할 수있는 기능을 만든다. 추가하지 않을 경우 추가하십시오. 나는 이것이 SQL의 범위를 벗어 났으며 스크립트 언어가 필요하다는 것을 확신하지만 큰 문제는 아니지만 SQL 내에 캡슐화 된 것을 유지하는 것이 바람직했습니다.

답변

1

저는 MySQL 관련 데이터 모델링 도구에 대해서는 잘 모르고 있지만 데이터베이스에 만들어진 모든 테이블에 열을 추가 할 수있는 인프라는 없습니다. 자동 동작을 사용하면 누군가가 열을 추가했지만 오타가있는 상황을 생각할 때 더러워집니다. 또는 비즈니스 관행에 위배되는 테이블이있는 경우 (나열된 열은 일반적으로 코드 테이블에서 쓸모가 없을 것입니다) ...

개발 환경을 제어하기는 어렵지만이를 제어하는 ​​가장 좋은 방법은 다음과 같습니다. 가능한 한 적은 사람들에게 책임을 위임 &. IE : 5 명의 개발자가있을 수 있지만 그 중 하나만 TEST/PROD/등에 스크립트를 적용 할 수 있습니다. 따라서 테이블 스크립트의 정확성을 검토하는 것은 개발자의 책임입니다.

+0

여기에 좋은 점이 있습니다. 열이 자동으로 트리거되지 않도록 해당 열을 추가하는 내부 함수를 만드는 방법이 있는지 물어 보지만이 열을 더 빨리 추가 할 수있는 옵션이 있는지 다시 한 번 생각해보십시오. – CogitoErgoSum

+0

@CogitoErgoSum : 가능합니다. MySQL에서 저장 프로 시저를 만들지 만 테이블 이름을 매개 변수로 전달해야하므로 MySQL 준비 문 (동적 SQL)을 사용해야합니다. 하지만 그건 총알이 아니에요 ... –

1

내가 먼저 말할 것입니다. 그렇게하지 마십시오. 감사 테이블을 별도로 만들고 트리거와 연결하십시오.

그렇지 않으면 원하는 것을 만들 수있는 절차 또는 다른 응용 프로그램을 통해 테이블 ​​구성을 제공해야합니다.

+0

나열된 OP 열은 일반적으로 동시성을 처리하기위한 것입니다. 감사 테이블은 모든 기록을 보여주는 것입니다 ... –

+0

OMG Ponies는 맞습니다. 특정 시나리오에서 찾고있는 정보를 보유하는 마스터 테이블을 사용하여 테이블 이름과 기본 ID를 참조하는 열을 보유 할 수 있습니다 ... 여전히 가장 이상적인 상황은 아닙니다. 나는 우리가 큰 스케일링을 예상 할 때 그러한 테이블이 얼마나 현명한 효율성이 될지 확신하지 못한다. – CogitoErgoSum

0

먼저 Randy's answer으로 연기했습니다.이 정보는 다른 곳에서 더 잘 추출됩니다.

즉, 열 추가를 설정하면 ALTER TABLE이 아마도 원하는 것일 수 있습니다. 각 테이블에 대해 누락 된 열을 판별하기위한 추가 로직을 포함하는 것도 고려할 수 있습니다.

+0

그 경로에서, 한 migth뿐만 아니라 테이블을 만든 후 실행되는 PHP는 아마 기반 스크립트를 만들고 거기에 필요한 열이 있는지 확인하십시오. 안돼, 그들을 추가하십시오. 나는이 경로에 대해 논쟁을 벌 였지만 좀 더 직접적인 경로가 있는지 SQL 내에서 알고 싶습니다. – CogitoErgoSum

관련 문제