1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-03 07:08:01 +00:00

Add Execute Raw SQL In An Ecto Migration as an elixir til

This commit is contained in:
jbranchaud
2016-06-26 18:42:33 -05:00
parent d3d1765d2b
commit ace0dacbc4
2 changed files with 38 additions and 1 deletions

View File

@@ -0,0 +1,36 @@
# Execute Raw SQL In An Ecto Migration
If you are performing a database migration with
[Ecto](https://hexdocs.pm/ecto/Ecto.html), perhaps the most straightforward
approach is to use Ecto's DSL. However, the DSL may not always be the best
choice. Being able to write raw SQL gives you more control. It will also
enable you to use database features that may not be directly or easily
available through the DSL.
Raw SQL can be included in a Ecto migration with a combination of Elixir's
heredoc syntax and the [`Ecto.Migration#execute/1`
function](https://hexdocs.pm/ecto/Ecto.Migration.html#execute/1). You'll
also need to provide both an `up` and `down` function to ensure that your
migrations are reversible.
```elixir
defmodule MyApp.Repo.Migrations.CreatePostsTable do
use Ecto.Migration
def up do
execute """
create table posts (
id serial primary key,
title varchar not null,
body varchar not null default '',
inserted_at timestamptz not null default now(),
updated_at timestamptz not null default now()
);
"""
end
def down do
execute "drop table posts;"
end
end
```