WarningThis statement was deprecated in favour of
DEFINE ACCESS ... TYPE RECORDin SurrealDB versions 2.x, and has been removed as of SurrealDB 3.0. Learn more in the DEFINE ACCESS.
DEFINE SCOPE statementSetting scope access allows SurrealDB to operate as a web database. With scopes you can set authentication and access rules which enable fine-grained access to tables and fields.
DEFINE SCOPE statement.DEFINE SCOPE statement.SurrealQL SyntaxDEFINE SCOPE [ OVERWRITE | IF NOT EXISTS ] @name SESSION @duration SIGNUP @expression SIGNIN @expression [ COMMENT @string ]
Below shows how you can create a scope using the DEFINE SCOPE statement.
-- Enable scope authentication directly in SurrealDB DEFINE SCOPE account SESSION 24h SIGNUP ( CREATE user SET email = $email, pass = crypto::argon2::generate($pass) ) SIGNIN ( SELECT * FROM user WHERE email = $email AND crypto::argon2::compare(pass, $pass) ) ;
IF NOT EXISTS clauseAvailable since: v1.3.0
The IF NOT EXISTS clause can be used to define a scope only if it does not already exist. If the scope already exists, the DEFINE SCOPE statement will return an error.
-- Create a SCOPE if it does not already exist DEFINE SCOPE IF NOT EXISTS example;