一、V(Versioned Migrations):
每个文件只会被执行一次
version必须唯一,可以用递增的整型和点(.)组合 下面都是合法的:
- 1
- 001
- 5.2
- 1.2.3.4.5.6.7.8.9
- 205.68
- 20130115113556
- 2013.1.15.11.35.56
- 2013.01.15.11.35.56
常用于创建、修改、删除表;插入、修改数据等 如:
CREATE TABLE car (
id INT NOT NULL PRIMARY KEY,
license_plate VARCHAR NOT NULL,
color VARCHAR NOT NULL
);
ALTER TABLE owner ADD driver_license_id VARCHAR;
INSERT INTO brand (name) VALUES ('DeLorean');
二、U(Undo Migrations):
与version作用相反,版本号与V一致,
DELETE FROM brand WHERE name='DeLorean';
ALTER TABLE owner DROP driver_license_id;
DROP TABLE car;
疑问:为什么不直接用V呢?U是否必要?
三、R(Repeatable Migrations):
校验和变化了就会执行,可以用于存放view/procedures/functions/packages...
执行顺序:在所有Version执行完了才会执行,自身执行顺序按描述排序。
因为会执行多次,编写DDL语句时需加上CREATE OR REPLACE。如:CREATE OR REPLACE VIEW blue_cars AS
SELECT id, license_plate FROM cars WHERE color='blue';