Struct migration::IndexCreateStatement
pub struct IndexCreateStatement { /* private fields */ }
Expand description
Create an index for an existing table
Examples
use sea_query::{tests_cfg::*, *};
let index = Index::create()
.name("idx-glyph-aspect")
.table(Glyph::Table)
.col(Glyph::Aspect)
.to_owned();
assert_eq!(
index.to_string(MysqlQueryBuilder),
r#"CREATE INDEX `idx-glyph-aspect` ON `glyph` (`aspect`)"#
);
assert_eq!(
index.to_string(PostgresQueryBuilder),
r#"CREATE INDEX "idx-glyph-aspect" ON "glyph" ("aspect")"#
);
assert_eq!(
index.to_string(SqliteQueryBuilder),
r#"CREATE INDEX "idx-glyph-aspect" ON "glyph" ("aspect")"#
);
Create index if not exists
use sea_query::{tests_cfg::*, *};
let index = Index::create()
.if_not_exists()
.name("idx-glyph-aspect")
.table(Glyph::Table)
.col(Glyph::Aspect)
.to_owned();
assert_eq!(
index.to_string(MysqlQueryBuilder),
r#"CREATE INDEX `idx-glyph-aspect` ON `glyph` (`aspect`)"#
);
assert_eq!(
index.to_string(PostgresQueryBuilder),
r#"CREATE INDEX IF NOT EXISTS "idx-glyph-aspect" ON "glyph" ("aspect")"#
);
assert_eq!(
index.to_string(SqliteQueryBuilder),
r#"CREATE INDEX IF NOT EXISTS "idx-glyph-aspect" ON "glyph" ("aspect")"#
);
Index with prefix
use sea_query::{tests_cfg::*, *};
let index = Index::create()
.name("idx-glyph-aspect")
.table(Glyph::Table)
.col((Glyph::Aspect, 128))
.to_owned();
assert_eq!(
index.to_string(MysqlQueryBuilder),
r#"CREATE INDEX `idx-glyph-aspect` ON `glyph` (`aspect` (128))"#
);
assert_eq!(
index.to_string(PostgresQueryBuilder),
r#"CREATE INDEX "idx-glyph-aspect" ON "glyph" ("aspect" (128))"#
);
assert_eq!(
index.to_string(SqliteQueryBuilder),
r#"CREATE INDEX "idx-glyph-aspect" ON "glyph" ("aspect")"#
);
Index with order
use sea_query::{tests_cfg::*, *};
let index = Index::create()
.name("idx-glyph-aspect")
.table(Glyph::Table)
.col((Glyph::Aspect, IndexOrder::Desc))
.to_owned();
assert_eq!(
index.to_string(MysqlQueryBuilder),
r#"CREATE INDEX `idx-glyph-aspect` ON `glyph` (`aspect` DESC)"#
);
assert_eq!(
index.to_string(PostgresQueryBuilder),
r#"CREATE INDEX "idx-glyph-aspect" ON "glyph" ("aspect" DESC)"#
);
assert_eq!(
index.to_string(SqliteQueryBuilder),
r#"CREATE INDEX "idx-glyph-aspect" ON "glyph" ("aspect" DESC)"#
);
Index with prefix and order
use sea_query::{tests_cfg::*, *};
let index = Index::create()
.name("idx-glyph-aspect")
.table(Glyph::Table)
.col((Glyph::Aspect, 64, IndexOrder::Asc))
.to_owned();
assert_eq!(
index.to_string(MysqlQueryBuilder),
r#"CREATE INDEX `idx-glyph-aspect` ON `glyph` (`aspect` (64) ASC)"#
);
assert_eq!(
index.to_string(PostgresQueryBuilder),
r#"CREATE INDEX "idx-glyph-aspect" ON "glyph" ("aspect" (64) ASC)"#
);
assert_eq!(
index.to_string(SqliteQueryBuilder),
r#"CREATE INDEX "idx-glyph-aspect" ON "glyph" ("aspect" ASC)"#
);
Implementations§
§impl IndexCreateStatement
impl IndexCreateStatement
pub fn new() -> IndexCreateStatement
pub fn new() -> IndexCreateStatement
Construct a new IndexCreateStatement
pub fn if_not_exists(&mut self) -> &mut IndexCreateStatement
pub fn if_not_exists(&mut self) -> &mut IndexCreateStatement
Create index if index not exists
pub fn name(&mut self, name: &str) -> &mut IndexCreateStatement
pub fn name(&mut self, name: &str) -> &mut IndexCreateStatement
Set index name
pub fn table<T>(&mut self, table: T) -> &mut IndexCreateStatementwhere
T: 'static + Iden,
pub fn table<T>(&mut self, table: T) -> &mut IndexCreateStatementwhere T: 'static + Iden,
Set target table
pub fn col<C>(&mut self, col: C) -> &mut IndexCreateStatementwhere
C: 'static + IntoIndexColumn,
pub fn col<C>(&mut self, col: C) -> &mut IndexCreateStatementwhere C: 'static + IntoIndexColumn,
Add index column
pub fn primary(&mut self) -> &mut IndexCreateStatement
pub fn primary(&mut self) -> &mut IndexCreateStatement
Set index as primary
pub fn unique(&mut self) -> &mut IndexCreateStatement
pub fn unique(&mut self) -> &mut IndexCreateStatement
Set index as unique
pub fn full_text(&mut self) -> &mut IndexCreateStatement
pub fn full_text(&mut self) -> &mut IndexCreateStatement
Set index as full text.
On MySQL, this is FULLTEXT
.
On PgSQL, this is GIN
.
pub fn index_type(&mut self, index_type: IndexType) -> &mut IndexCreateStatement
pub fn index_type(&mut self, index_type: IndexType) -> &mut IndexCreateStatement
Set index type. Not available on Sqlite.
pub fn is_primary_key(&self) -> bool
pub fn is_unique_key(&self) -> bool
pub fn get_index_spec(&self) -> &TableIndex
pub fn take(&mut self) -> IndexCreateStatement
§impl IndexCreateStatement
impl IndexCreateStatement
pub fn to_string<T>(&self, schema_builder: T) -> Stringwhere T: SchemaBuilder,
pub fn build<T>(&self, schema_builder: T) -> Stringwhere T: SchemaBuilder,
pub fn build_any(&self, schema_builder: &dyn SchemaBuilder) -> String
Trait Implementations§
§impl Clone for IndexCreateStatement
impl Clone for IndexCreateStatement
§fn clone(&self) -> IndexCreateStatement
fn clone(&self) -> IndexCreateStatement
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read more§impl Debug for IndexCreateStatement
impl Debug for IndexCreateStatement
§impl Default for IndexCreateStatement
impl Default for IndexCreateStatement
§fn default() -> IndexCreateStatement
fn default() -> IndexCreateStatement
Returns the “default value” for a type. Read more
§impl SchemaStatementBuilder for IndexCreateStatement
impl SchemaStatementBuilder for IndexCreateStatement
§fn build<T>(&self, schema_builder: T) -> Stringwhere
T: SchemaBuilder,
fn build<T>(&self, schema_builder: T) -> Stringwhere T: SchemaBuilder,
Build corresponding SQL statement for certain database backend and return SQL string
§fn build_any(&self, schema_builder: &dyn SchemaBuilder) -> String
fn build_any(&self, schema_builder: &dyn SchemaBuilder) -> String
Build corresponding SQL statement for certain database backend and return SQL string
§fn to_string<T>(&self, schema_builder: T) -> Stringwhere
T: SchemaBuilder,
fn to_string<T>(&self, schema_builder: T) -> Stringwhere T: SchemaBuilder,
Build corresponding SQL statement for certain database backend and return SQL string
§impl StatementBuilder for IndexCreateStatement
impl StatementBuilder for IndexCreateStatement
§fn build(&self, db_backend: &DatabaseBackend) -> Statement
fn build(&self, db_backend: &DatabaseBackend) -> Statement
Method to call in order to build a Statement