2010-08-20 2 views
2

MySQL 데이터베이스에 메타 데이터를 첨부 할 수있는 방법이 있습니까? 코드 업그레이드가 필요할 때마다 데이터베이스 스키마를 자동으로 업데이트하는 코드를 작성하려고합니다. 스키마 버전 인 단일 정수 값을 저장해야합니다. 나는 물론 그것을위한 전체 테이블을 만들 수 있지만, 그것은 단순한 숫자에 대한 잔인한 것처럼 보입니다. 이에서 주석 얻기 위해 정규식을MySQL 데이터베이스에 간단한 메타 데이터 첨부하기

ALTER TABLE table1 COMMENT = '1.4'; 

당신은해야합니다 :

답변

2

당신은 버전을 저장하는 테이블 주석을 사용할 수 있습니다

SHOW CREATE TABLE table1; 
/COMMENT='(.*)'/ 
+0

완벽합니다. 감사! – zildjohn01

1

라는 제목으로 질문에 대답하기를, 즉 개별 테이블이 아닌 전체 데이터베이스에 대한 메타 데이터의 경우, 보유한 권한에 따라 몇 가지 선택 사항이 있습니다.

가장 직접적인 경로는 CREATE ROUTINE 권한이 필요한 저장 함수를 만드는 것입니다. 예 :

mysql> CREATE FUNCTION `mydb`.DB_VERSION() RETURNS VARCHAR(15) 
     RETURN '1.2.7.2861'; 
Query OK, 0 rows affected (0.03 sec) 

mysql> SELECT `mydb`.DB_VERSION(); 
+--------------+ 
| DB_VERSION() | 
+--------------+ 
| 1.2.7.2861 | 
+--------------+ 
1 row in set (0.06 sec) 

권한이 테이블 만들기에만 제한되는 경우 간단한 테이블을 만들고 메타 데이터를 기본값으로 설정할 수 있습니다. 테이블에 데이터를 저장할 필요가 없습니다.

mysql> CREATE TABLE `mydb`.`db_metadata` (
    `version` varchar(15) not null default '1.2.7.2861'); 
Query OK, 0 rows affected (0.00 sec) 

mysql> SHOW COLUMNS FROM `mydb`.`db_metadata`; 
+---------+-------------+------+-----+------------+-------+ 
| Field | Type  | Null | Key | Default | Extra | 
+---------+-------------+------+-----+------------+-------+ 
| version | varchar(15) | NO |  | 1.2.7.2861 |  | 
+---------+-------------+------+-----+------------+-------+ 
1 row in set (0.00 sec) 
관련 문제