DEFINE
statement
DEFINE
statement
The DEFINE statement can be used to specify authentication access and behaviour, global parameters, table configurations, table events, schema definitions, and indexes.
Statement syntax
DEFINE [
NAMESPACE @name
| DATABASE @name
| USER @name ON [ ROOT | NAMESPACE | DATABASE ] [ PASSWORD @pass | PASSHASH @hash ] ROLES @roles
| TOKEN @name ON [ NAMESPACE | DATABASE | SCOPE @scope ] TYPE @type VALUE @value
| SCOPE @name
[ SESSION @duration ]
[ SIGNUP @expression ]
[ SIGNIN @expression ]
| TABLE @name
[ DROP ]
[ SCHEMAFULL | SCHEMALESS ]
[ AS SELECT @projections
FROM @tables
[ WHERE @condition ]
[ GROUP [ BY ] @groups ]
]
[ PERMISSIONS [ NONE | FULL
| FOR select @expression
| FOR create @expression
| FOR update @expression
| FOR delete @expression
] ]
| EVENT @name ON [ TABLE ] @table WHEN @expression THEN @expression
| FIELD @name ON [ TABLE ] @table
[ [ FLEXIBLE ] TYPE @type ]
[ VALUE @expression ]
[ ASSERT @expression ]
[ PERMISSIONS [ NONE | FULL
| FOR select @expression
| FOR create @expression
| FOR update @expression
| FOR delete @expression
] ]
| ANALYZER @name
[ TOKENIZERS @tokenizers ]
[ FILTERS @filters ]
| INDEX @name ON [ TABLE ] @table [ FIELDS | COLUMNS ] @fields
[ UNIQUE | SEARCH ANALYZER @analyzer [ BM25 [(@k1, @b)] ] [ HIGHLIGHTS ] ]
]
DEFINE NAMESPACE
Allows you to instantiate namespaces as part of SurrealDB's multi-tenancy model.
DEFINE DATABASE
Allows you to instantiate named databases.
DEFINE USER
Allows you to create user accounts.
DEFINE TOKEN
Allows you to authenticate on SurrealDB with third-party OAuth tokens.
DEFINE SCOPE
Allows you to create scopes to set authentication and access rules.
DEFINE TABLE
Declare the name of a table, make it schemafull or schemaless, create projections, and set table level permissions
DEFINE EVENT
Allows you to specify conditions that trigger the execution of custom logic.
DEFINE FUNCTION
Allows you to specify custom reusable functions that can be used across a database.
DEFINE FIELD
Allows you to instantiate named fields on a table.
DEFINE ANALYZER
Allows you to create a text analyzer.
DEFINE INDEX
Allows you to create database indexes on table fields.
DEFINE PARAM
Allows you to specify global (database-wide) parameters.