Cette page a été traduite de l'anglais avec l'aide de l'IA. En cas de divergence, la version anglaise fait référence.
INSERT
Crée une ou plusieurs nouvelles instances d'une ressource.
Voir aussi :
[ Hiérarchie des ressources StackQL ]
Syntaxe
insertStatement::=
INSERT [ /*+ AWAIT */ ] [ IGNORE ] [ INTO ] <multipartIdentifier>
( field_name [, field_name] ... )
{ VALUES ( value [, value] ... ) | <selectExpression> }
[ RETURNING field_name [, field_name] ... ];
Clause RETURNING
La clause RETURNING permet de récupérer des données de la réponse de l'opération INSERT. Elle est particulièrement utile lorsque :
- L'API renvoie des informations importantes telles que des ID générés, des codes d'état ou d'autres métadonnées
- Vous devez capturer les données de la réponse pour un traitement ultérieur
- Vous souhaitez vérifier le résultat de l'opération
Les champs indiqués dans la clause RETURNING sont désérialisés à partir de la réponse de l'API et affichés dans le jeu de résultats.
Exemples
Instruction INSERT de base
Exécutez une instruction INSERT pour créer une ressource disque Compute Engine. Il s'agit d'un appel non bloquant (asynchrone).
-- Create a Compute Engine Disk resource
INSERT INTO google.compute.disks (project, zone, name, sizeGb)
SELECT 'stackql-demo',
'australia-southeast1-a',
'test10gbdisk', 10;
Instruction INSERT (bloquante)
Exécutez une instruction INSERT pour créer une ressource disque Compute Engine. Il s'agit d'un appel bloquant (synchrone).
-- Create a Compute Engine Disk resource
INSERT /*+ AWAIT */ INTO google.compute.disks (project, zone, name, sizeGb)
SELECT 'stackql-demo',
'australia-southeast1-a',
'test10gbdisk', 10;
Instruction INSERT avec SELECT
Exécutez une instruction INSERT avec SELECT.
-- Create a Azure Network Interface
INSERT INTO azure.network.network_interfaces
(
resource_group_name,
subscription_id,
network_interface_name,
data__location,
data__properties
)
SELECT
'vmss-flex',
'0123456789',
'vmss-flex-vnet-nic01-manual-' || '1',
'eastus',
json_replace(json_remove(properties,
'$.allowPort25Out',
'$.auxiliarySku',
'$.provisioningState',
'$.resourceGuid',
'$.macAddress',
'$.vnetEncryptionSupported',
'$.enableIPForwarding',
'$.defaultOutboundAccess',
'$.primary',
'$.virtualMachine',
'$.hostedWorkloads',
'$.tapConfigurations',
'$.nicType',
'$.auxiliaryMode',
'$.ipConfigurations[0].id',
'$.ipConfigurations[0].etag',
'$.ipConfigurations[0].type',
'$.ipConfigurations[0].properties.provisioningState',
'$.ipConfigurations[0].properties.privateIPAddress',
'$.ipConfigurations[0].properties.privateIPAllocationMethod',
'$.ipConfigurations[0].properties.primary',
'$.ipConfigurations[0].properties.privateIPAddressVersion'
),
'$.ipConfigurations[0].name',
'vmss-flex-vnet-nic01-defaultIpConfiguration'
)
FROM
azure.network.network_interfaces
WHERE subscription_id = '0123456789'
AND resource_group_name = 'vmss-flex'
AND network_interface_name = 'vmss-nic-01';
Instruction INSERT avec la clause RETURNING
Exécutez une instruction INSERT et récupérez des champs précis de la réponse de l'API.
-- Execute a Snowflake SQL statement and return the response data
INSERT INTO snowflake.sqlapi.statements (
data__statement,
data__timeout,
data__database,
data__schema,
"User-Agent",
endpoint
)
SELECT
'SELECT
customer_id,
customer_name,
email,
credit_card_number,
purchase_amount,
purchase_date
FROM CUSTOMER_DATA',
10,
'MY_DATABASE',
'MY_SCHEMA',
'User-Agent',
'ABCDEF-XY12345'
RETURNING code, sqlState, message, data;
Résultat :
|--------|----------|--------------------------------|-----------------------------------------------------------------------------|
| code | sqlState | message | data |
|--------|----------|--------------------------------|-----------------------------------------------------------------------------|
| 090001 | 00000 | Statement executed | [["1","John |
| | | successfully. | Smith","john.smith@example.com","***MASKED***","199.99","20262"],["1","John |
| | | | Smith","john.smith@example.com","***MASKED***","199.99","20263"]] |
|--------|----------|--------------------------------|-----------------------------------------------------------------------------|