ALTER TABLE table_constraint (Transact-SQL)ALTER TABLE table_constraint (Transact-SQL)

QUESTO ARGOMENTO SI APPLICA A:sìSQL Server (a partire dalla versione 2008)sìDatabase SQL di AzurenoAzure SQL Data Warehouse noParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Specifica le proprietà di una definizione DEFAULT aggiunta a una tabella tramite, un vincolo CHECK, FOREIGN KEY, UNIQUE o una chiave primaria ALTER TABLE.Specifies the properties of a PRIMARY KEY, UNIQUE, FOREIGN KEY, a CHECK constraint, or a DEFAULT definition added to a table by using ALTER TABLE.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintassiSyntax

[ CONSTRAINT constraint_name ]   
{   
    { PRIMARY KEY | UNIQUE }   
        [ CLUSTERED | NONCLUSTERED ]   
        (column [ ASC | DESC ] [ ,...n ] )  
        [ WITH FILLFACTOR = fillfactor   
        [ WITH ( <index_option>[ , ...n ] ) ]  
        [ ON { partition_scheme_name ( partition_column_name ... )  
          | filegroup | "default" } ]   
    | FOREIGN KEY   
        ( column [ ,...n ] )  
        REFERENCES referenced_table_name [ ( ref_column [ ,...n ] ) ]   
        [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]   
        [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]   
        [ NOT FOR REPLICATION ]   
    | DEFAULT constant_expression FOR column [ WITH VALUES ]   
    | CHECK [ NOT FOR REPLICATION ] ( logical_expression )  
}  

ArgomentiArguments

CONSTRAINTCONSTRAINT
Specifica l'inizio di una definizione di un vincolo PRIMARY KEY, UNIQUE, FOREIGN KEY o CHECK oppure di una definizione DEFAULT.Specifies the start of a definition for a PRIMARY KEY, UNIQUE, FOREIGN KEY, or CHECK constraint, or a DEFAULT.

constraint_nameconstraint_name
Nome del vincolo.Is the name of the constraint. I nomi di vincolo devono seguire le regole per identificatori, ad eccezione del fatto che il nome non può iniziare con un simbolo di cancelletto (#).Constraint names must follow the rules for identifiers, except that the name cannot start with a number sign (#). Se constraint_name viene omesso, al vincolo viene assegnato un nome generato dal sistema.If constraint_name is not supplied, a system-generated name is assigned to the constraint.

PRIMARY KEYPRIMARY KEY
Vincolo che impone l'integrità di entità per una o più colonne specificate tramite un indice univoco.Is a constraint that enforces entity integrity for a specified column or columns by using a unique index. È possibile creare un solo vincolo PRIMARY KEY per ogni tabella.Only one PRIMARY KEY constraint can be created for each table.

UNIQUEUNIQUE
Vincolo che impone l'integrità di entità per una o più colonne specificate tramite un indice univoco.Is a constraint that provides entity integrity for a specified column or columns by using a unique index.

CLUSTERED | NONCLUSTEREDCLUSTERED | NONCLUSTERED
Imposta la creazione di un indice cluster o non cluster per il vincolo PRIMARY KEY o UNIQUE.Specifies that a clustered or nonclustered index is created for the PRIMARY KEY or UNIQUE constraint. Per impostazione predefinita per i vincoli PRIMARY KEY è impostata l'opzione CLUSTERED.PRIMARY KEY constraints default to CLUSTERED. Per impostazione predefinita per i vincoli UNIQUE è impostata l'opzione NONCLUSTERED.UNIQUE constraints default to NONCLUSTERED.

Se in una tabella esiste già un vincolo o un indice cluster, non è possibile specificare l'opzione CLUSTERED.If a clustered constraint or index already exists on a table, CLUSTERED cannot be specified. In questo caso, inoltre, i vincoli PRIMARY KEY sono impostati su NONCLUSTERED.If a clustered constraint or index already exists on a table, PRIMARY KEY constraints default to NONCLUSTERED.

Colonne di ntext, testo, varchar (max), nvarchar (max), varbinary (max), xml, o immagine tipi di dati non possono essere specificati come colonne di un indice.Columns that are of the ntext, text, varchar(max), nvarchar(max), varbinary(max), xml, or image data types cannot be specified as columns for an index.

colonnacolumn
Colonna o elenco di colonne tra parentesi utilizzate in un nuovo vincolo.Is a column or list of columns specified in parentheses that are used in a new constraint.

[ ASC | DESC][ ASC | DESC ]
Specifica l'ordinamento della colonna o delle colonne che fanno parte dei vincoli di tabella.Specifies the order in which the column or columns participating in table constraints are sorted. Il valore predefinito è ASC.The default is ASC.

CON valore FILLFACTOR = fattore di riempimentoWITH FILLFACTOR =fillfactor
Specifica la percentuale utilizzata da Motore di databaseDatabase Engine per riempire ogni pagina dell'indice utilizzata per archiviare dati dell'indice.Specifies how full the Motore di databaseDatabase Engine should make each index page used to store the index data. Specificato dall'utente fillfactor valori possono essere compresi tra 1 e 100.User-specified fillfactor values can be from 1 through 100. Se non viene specificato alcun valore, il valore predefinito è 0.If a value is not specified, the default is 0.

Importante

Documentazione con FILLFACTOR = fillfactor come l'unica opzione di indice che si applica ai vincoli PRIMARY KEY o UNIQUE viene mantenuto per compatibilità con le versioni precedenti, ma non sarà più documentata in futuro in questo modo rilascia.Documenting WITH FILLFACTOR = fillfactor as the only index option that applies to PRIMARY KEY or UNIQUE constraints is maintained for backward compatibility, but will not be documented in this manner in future releases. È possono specificare altre opzioni di indice di index_option clausola dell'istruzione ALTER TABLE.Other index options can be specified in the index_option clause of ALTER TABLE.

ON { partition_scheme_name(partition_column_name) | filegroup | "predefinito" }ON { partition_scheme_name(partition_column_name) | filegroup| "default" }
Si applica a: SQL Server 2008SQL Server 2008 tramite SQL Server 2017SQL Server 2017.Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

Specifica il percorso di archiviazione dell'indice creato per il vincolo.Specifies the storage location of the index created for the constraint. Se partition_scheme_name è specificato, l'indice viene partizionato e le partizioni vengono eseguito il mapping ai filegroup specificati da partition_scheme_name.If partition_scheme_name is specified, the index is partitioned and the partitions are mapped to the filegroups that are specified by partition_scheme_name. Se filegroup viene specificato, viene creato l'indice nel filegroup specificato.If filegroup is specified, the index is created in the named filegroup. Se "predefinito" è specificato o se ON non è specificato, l'indice viene creato nello stesso filegroup della tabella.If "default" is specified or if ON is not specified at all, the index is created in the same filegroup as the table. Se si specifica ON quando si aggiunge un indice cluster per un vincolo PRIMARY KEY o UNIQUE, l'intera tabella viene spostata nel filegroup specificato durante la creazione dell'indice cluster.If ON is specified when a clustered index is added for a PRIMARY KEY or UNIQUE constraint, the whole table is moved to the specified filegroup when the clustered index is created.

In questo contesto, default non è una parola chiave. è un identificatore per il filegroup predefinito e deve essere delimitato, ad esempio ON "predefinito" oppure ON [predefinito].In this context, default is not a keyword; it is an identifier for the default filegroup and must be delimited, as in ON "default" or ON [default]. Se "predefinito" viene specificato, l'opzione QUOTED_IDENTIFIER deve essere impostata su ON per la sessione corrente.If "default" is specified, the QUOTED_IDENTIFIER option must be ON for the current session. Si tratta dell'impostazione predefinita.This is the default setting.

FOREIGN KEY REFERENCESFOREIGN KEY REFERENCES
Vincolo che impone l'integrità referenziale per i dati nella colonna.Is a constraint that provides referential integrity for the data in the column. Per i vincoli FOREIGN KEY è necessario che ogni valore della colonna esista nella colonna specificata della tabella a cui viene fatto riferimento.FOREIGN KEY constraints require that each value in the column exist in the specified column in the referenced table.

referenced_table_namereferenced_table_name
Tabella a cui fa riferimento il vincolo FOREIGN KEY.Is the table referenced by the FOREIGN KEY constraint.

ref_columnref_column
Colonna o elenco di colonne tra parentesi a cui fa riferimento il nuovo vincolo FOREIGN KEY.Is a column or list of columns in parentheses referenced by the new FOREIGN KEY constraint.

ELIMINAZIONE { ALCUNA AZIONE | CASCADE | SET NULL | IMPOSTAZIONE DEL VALORE PREDEFINITO}ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT }
Specifica quale azione si verifica nelle righe della tabella che viene modificata se tali righe includono una relazione referenziale e se la riga a cui viene fatto riferimento viene eliminata dalla tabella padre.Specifies what action happens to rows in the table that is altered, if those rows have a referential relationship and the referenced row is deleted from the parent table. Il valore predefinito è NO ACTION.The default is NO ACTION.

NO ACTIONNO ACTION
Motore di database di SQL ServerSQL Server Database Engine genera un errore e viene eseguito il rollback dell'azione di eliminazione della riga nella tabella padre.The Motore di database di SQL ServerSQL Server Database Engine raises an error and the delete action on the row in the parent table is rolled back.

CASCADECASCADE
Le righe corrispondenti vengono eliminate dalla tabella di riferimento se la riga viene eliminata dalla tabella padre.Corresponding rows are deleted from the referencing table if that row is deleted from the parent table.

SET NULLSET NULL
Tutti i valori che costituiscono la chiave esterna vengono impostati su NULL quando viene eliminata la riga corrispondente nella tabella padre.All the values that make up the foreign key are set to NULL when the corresponding row in the parent table is deleted. Per l'esecuzione di questo vincolo, è necessario che le colonne chiave esterna ammettano valori Null.For this constraint to execute, the foreign key columns must be nullable.

SET DEFAULTSET DEFAULT
Tutti i valori che costituiscono la chiave esterna vengono impostati sui valori predefiniti quando viene eliminata la riga corrispondente nella tabella padre.All the values that comprise the foreign key are set to their default values when the corresponding row in the parent table is deleted. Per l'esecuzione di questo vincolo, è necessario che per tutte le colonne chiave esterna siano definiti valori predefiniti.For this constraint to execute, all foreign key columns must have default definitions. Se una colonna ammette valori Null e non viene impostato un valore predefinito esplicito, NULL diventa il valore predefinito implicito della colonna.If a column is nullable and there is no explicit default value set, NULL becomes the implicit default value of the column.

Non specificare CASCADE se la tabella verrà inclusa in una pubblicazione di tipo merge che utilizza record logici.Do not specify CASCADE if the table will be included in a merge publication that uses logical records. Per altre informazioni sui record logici, vedere Raggruppare modifiche alle righe correlate con record logici.For more information about logical records, see Group Changes to Related Rows with Logical Records.

Non è possibile definire ON DELETE CASCADE se esiste già un trigger INSTEAD OF per ON DELETE nella tabella che viene modificata.ON DELETE CASCADE cannot be defined if an INSTEAD OF trigger ON DELETE already exists on the table that is being altered.

Ad esempio, nel AdventureWorks2012AdventureWorks2012 database, il ProductVendor tabella ha una relazione referenziale con la fornitore tabella.For example, in the AdventureWorks2012AdventureWorks2012 database, the ProductVendor table has a referential relationship with the Vendor table. Il ProductVendor riferimenti di chiave esterna di vendorID chiave primaria.The ProductVendor.VendorID foreign key references the Vendor.VendorID primary key.

Se viene eseguita un'istruzione DELETE in una riga il fornitore tabella e un'azione ON DELETE CASCADE viene specificata per ProductVendor, Motore di databaseDatabase Engine verifica la presenza di uno o più righe dipendenti di ProductVendor tabella.If a DELETE statement is executed on a row in the Vendor table and an ON DELETE CASCADE action is specified for ProductVendor.VendorID, the Motore di databaseDatabase Engine checks for one or more dependent rows in the ProductVendor table. Le eventuali righe dipendenti nella ProductVendor tabella verrà eliminata assieme alla riga a cui fa riferimento il fornitore tabella.If any exist, the dependent rows in the ProductVendor table will be deleted, in addition to the row referenced in the Vendor table.

Al contrario, se si specifica NO ACTION, il Motore di databaseDatabase Engine genera un errore ed eseguire il rollback dell'azione di eliminazione fornitore riga quando esiste almeno una riga nel ProductVendor tabella cui fa riferimento.Conversely, if NO ACTION is specified, the Motore di databaseDatabase Engine raises an error and rolls back the delete action on the Vendor row when there is at least one row in the ProductVendor table that references it.

AGGIORNAMENTO { ALCUNA AZIONE | CASCADE | SET NULL | IMPOSTAZIONE DEL VALORE PREDEFINITO}ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT }
Specifica l'azione eseguita nelle righe della tabella modificata se tali righe includono una relazione referenziale e la riga a cui viene fatto riferimento è stata aggiornata nella tabella padre.Specifies what action happens to rows in the table altered when those rows have a referential relationship and the referenced row is updated in the parent table. Il valore predefinito è NO ACTION.The default is NO ACTION.

NO ACTIONNO ACTION
Motore di databaseDatabase Engine genera un errore e viene eseguito il rollback dell'azione di aggiornamento della riga nella tabella padre.The Motore di databaseDatabase Engine raises an error, and the update action on the row in the parent table is rolled back.

CASCADECASCADE
Le righe corrispondenti vengono aggiornate nella tabella di riferimento quando la riga viene aggiornata nella tabella padre.Corresponding rows are updated in the referencing table when that row is updated in the parent table.

SET NULLSET NULL
Tutti i valori che costituiscono la chiave esterna vengono impostati su NULL quando viene aggiornata la riga corrispondente nella tabella padre.All the values that make up the foreign key are set to NULL when the corresponding row in the parent table is updated. Per l'esecuzione di questo vincolo, è necessario che le colonne chiave esterna ammettano valori Null.For this constraint to execute, the foreign key columns must be nullable.

SET DEFAULTSET DEFAULT
Tutti i valori che costituiscono la chiave esterna vengono impostati sui rispettivi valori predefiniti quando viene aggiornata la riga corrispondente nella tabella padre.All the values that make up the foreign key are set to their default values when the corresponding row in the parent table is updated. Per l'esecuzione di questo vincolo, è necessario che per tutte le colonne chiave esterna siano definiti valori predefiniti.For this constraint to execute, all foreign key columns must have default definitions. Se una colonna ammette valori Null e non viene impostato un valore predefinito esplicito, NULL diventa il valore predefinito implicito della colonna.If a column is nullable, and there is no explicit default value set, NULL becomes the implicit default value of the column.

Non specificare CASCADE se la tabella verrà inclusa in una pubblicazione di tipo merge che utilizza record logici.Do not specify CASCADE if the table will be included in a merge publication that uses logical records. Per altre informazioni sui record logici, vedere Raggruppare modifiche alle righe correlate con record logici.For more information about logical records, see Group Changes to Related Rows with Logical Records.

Non è possibile specificare ON UPDATE CASCADE, SET NULL o SET DEFAULT se nella tabella che viene modificata esiste già un trigger INSTEAD OF per ON UPDATE.ON UPDATE CASCADE, SET NULL, or SET DEFAULT cannot be defined if an INSTEAD OF trigger ON UPDATE already exists on the table that is being altered.

Ad esempio, nel AdventureWorks2012AdventureWorks2012 database, il ProductVendor tabella ha una relazione referenziale con la fornitore tabella.For example, in the AdventureWorks2012AdventureWorks2012 database, the ProductVendor table has a referential relationship with the Vendor table. Il ProductVendor riferimenti di chiave esterna di vendorID chiave primaria.The ProductVendor.VendorID foreign key references the Vendor.VendorID primary key.

Se viene eseguita un'istruzione UPDATE in una riga il fornitore tabella e un'azione ON UPDATE CASCADE viene specificata per ProductVendor, Motore di databaseDatabase Engine verifica la presenza di uno o più righe dipendenti di ProductVendor tabella.If an UPDATE statement is executed on a row in the Vendor table and an ON UPDATE CASCADE action is specified for ProductVendor.VendorID, the Motore di databaseDatabase Engine checks for one or more dependent rows in the ProductVendor table. Eventuale riga dipendente nella ProductVendor tabella verrà aggiornata, insieme alla riga a cui fa riferimento il fornitore tabella.If any exist, the dependent row in the ProductVendor table will be updated, as well as the row referenced in the Vendor table.

Al contrario, se si specifica NO ACTION, il Motore di databaseDatabase Engine genera un errore ed eseguire il rollback dell'azione di aggiornamento fornitore riga quando esiste almeno una riga nel ProductVendor tabella cui fa riferimento.Conversely, if NO ACTION is specified, the Motore di databaseDatabase Engine raises an error and rolls back the update action on the Vendor row when there is at least one row in the ProductVendor table that references it.

NOT FOR REPLICATIONNOT FOR REPLICATION
Si applica a: SQL Server 2008SQL Server 2008 tramite SQL Server 2017SQL Server 2017.Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

Questa clausola può essere specificata per i vincoli FOREIGN KEY e CHECK.Can be specified for FOREIGN KEY constraints and CHECK constraints. Se per un vincolo si specifica questa clausola, il vincolo non viene imposto quando gli agenti di replica eseguono le operazioni di inserimento, aggiornamento o eliminazione.If this clause is specified for a constraint, the constraint is not enforced when replication agents perform insert, update, or delete operations.

DEFAULTDEFAULT
Specifica il valore predefinito per la colonna.Specifies the default value for the column. Le definizioni DEFAULT possono essere utilizzate per assegnare valori a una nuova colonna nelle righe di dati esistenti.DEFAULT definitions can be used to provide values for a new column in the existing rows of data. Non è possibile aggiungere le definizioni DEFAULT alle colonne che contengono un timestamp tipo di dati, una proprietà IDENTITY, una definizione DEFAULT esistente o un valore predefinito associato.DEFAULT definitions cannot be added to columns that have a timestamp data type, an IDENTITY property, an existing DEFAULT definition, or a bound default. Se alla colonna è associato un valore predefinito, è necessario rimuoverlo prima di aggiungere il nuovo valore predefinito.If the column has an existing default, the default must be dropped before the new default can be added. Se è specificato un valore predefinito per una colonna di tipo definito dall'utente, il tipo deve supportare una conversione implicita da constant_expression per il tipo definito dall'utente.If a default value is specified for a user-defined type column, the type should support an implicit conversion from constant_expression to the user-defined type. Per garantire la compatibilità con le versioni precedenti di SQL ServerSQL Server, è possibile assegnare un nome di vincolo a una definizione DEFAULT.To maintain compatibility with earlier versions of SQL ServerSQL Server, a constraint name can be assigned to a DEFAULT.

constant_expressionconstant_expression
Valore letterale, valore Null o funzione di sistema utilizzato come valore predefinito della colonna.Is a literal value, a NULL, or a system function that is used as the default column value. Se constant_expression viene utilizzata in combinazione con una colonna definita per essere di un MicrosoftMicrosoft .NET Framework.NET Framework tipo definito dall'utente, l'implementazione del tipo deve supportare una conversione implicita dal constant_ espressione per il tipo definito dall'utente.If constant_expression is used in conjunction with a column defined to be of a MicrosoftMicrosoft .NET Framework.NET Framework user-defined type, the implementation of the type must support an implicit conversion from the constant_expression to the user-defined type.

PER colonnaFOR column
Specifica la colonna associata a una definizione DEFAULT a livello di tabella.Specifies the column associated with a table-level DEFAULT definition.

WITH VALUESWITH VALUES
Specifica che il valore predefinito fornito constant_expression viene archiviato in una nuova colonna che viene aggiunto alle righe esistenti.Specifies that the value given in DEFAULT constant_expression is stored in a new column that is added to existing rows. È possibile specificare la clausola WITH VALUES solo quando viene specificato DEFAULT in una clausola ADD di colonna.WITH VALUES can be specified only when DEFAULT is specified in an ADD column clause. Se la colonna aggiunta ammette valori Null e viene specificata la clausola WITH VALUES, il valore predefinito viene archiviato nella nuova colonna aggiunta alle righe esistenti.If the added column allows null values and WITH VALUES is specified, the default value is stored in the new column that is added to existing rows. Se per le colonne che ammettono valori Null la clausola WITH VALUES non viene specificata, il valore NULL viene archiviato nella nuova colonna nelle righe esistenti.If WITH VALUES is not specified for columns that allow nulls, NULL is stored in the new column in existing rows. Se la nuova colonna non ammette valori Null, il valore predefinito viene archiviato nelle nuove righe, indipendentemente dal fatto che la clausola WITH VALUES sia o meno specificata.If the new column does not allow nulls, the default value is stored in new rows regardless of whether WITH VALUES is specified.

CHECKCHECK
Vincolo che impone l'integrità di dominio tramite la limitazione dei valori che è possibile inserire in una o più colonne.Is a constraint that enforces domain integrity by limiting the possible values that can be entered into a column or columns.

Logical_Expressionlogical_expression
Espressione logica utilizzata in un vincolo CHECK che restituisce TRUE o FALSE.Is a logical expression used in a CHECK constraint and returns TRUE or FALSE. Logical_Expression utilizzato con vincoli CHECK non può fare riferimento a un'altra tabella ma può fare riferimento altre colonne nella stessa tabella per la stessa riga.logical_expression used with CHECK constraints cannot reference another table but can reference other columns in the same table for the same row. L'espressione non può fare riferimento a un tipo di dati alias.The expression cannot reference an alias data type.

OsservazioniRemarks

Quando si aggiungono vincoli FOREIGN KEY o CHECK, in tutti i dati esistenti viene verificata la presenza di eventuali violazioni dei vincoli, a meno che non venga specificata l'opzione WITH NOCHECK.When FOREIGN KEY or CHECK constraints are added, all existing data is verified for constraint violations unless the WITH NOCHECK option is specified. Se si verificano violazioni, l'istruzione ALTER TABLE ha esito negativo e viene restituito un errore.If any violations occur, ALTER TABLE fails and an error is returned. Quando si aggiunge un nuovo vincolo PRIMARY KEY o UNIQUE a colonne esistenti, i dati delle colonne devono essere univoci.When a new PRIMARY KEY or UNIQUE constraint is added to an existing column, the data in the column or columns must be unique. Se vengono individuati valori duplicati, l'istruzione ALTER TABLE ha esito negativo.If duplicate values are found, ALTER TABLE fails. L'opzione WITH NOCHECK non ha alcun effetto quando si aggiungono vincoli PRIMARY KEY o UNIQUE.The WITH NOCHECK option has no effect when PRIMARY KEY or UNIQUE constraints are added.

Ogni vincolo PRIMARY KEY e UNIQUE genera un indice.Each PRIMARY KEY and UNIQUE constraint generates an index. Il numero di vincoli UNIQUE e PRIMARY KEY non deve generare un numero di indici della tabella maggiore di 999 nel caso di indici non cluster e maggiore di 1 nel caso di indici cluster.The number of UNIQUE and PRIMARY KEY constraints cannot cause the number of indexes on the table to exceed 999 nonclustered indexes and 1 clustered index. I vincoli di chiave esterna non generano automaticamente un indice.Foreign key constraints do not automatically generate an index. Le colonne chiave esterna, tuttavia, vengono in genere utilizzate in criteri di join nelle query confrontando le colonne nel vincolo di chiave esterna di una tabella con le colonne chiave primaria o univoca nell'altra tabella.However, foreign key columns are frequently used in join criteria in queries by matching the column or columns in the foreign key constraint of one table with the primary or unique key column or columns in the other table. Un indice nelle colonne chiave esterna consente a Motore di databaseDatabase Engine di trovare rapidamente i dati correlati nella tabella della chiave esterna.An index on the foreign key columns enables the Motore di databaseDatabase Engine to quickly find related data in the foreign key table.

EsempiExamples

Per esempi, vedere ALTER TABLE ( Transact-SQL ) .For examples, see ALTER TABLE (Transact-SQL).

Vedere ancheSee Also

ALTER TABLE (Transact-SQL)ALTER TABLE (Transact-SQL)