SnowConvert AI - PostgreSQL - CREATE VIEW

Traduction de PostgreSQL vers Snowflake

S’applique à :

  • PostgreSQL

  • Greenplum

  • Netezza

Description

Cette commande crée une vue dans une base de données, qui est exécutée chaque fois que la vue est référencée dans une requête.

Pour plus d’informations, voir la documentation CREATE VIEW.

Grammar Syntax

CREATE [OR REPLACE] [TEMP | TEMPORARY] [RECURSIVE] VIEW <name> [ ( <column_name> [, ...] ) ]
    [ WITH ( view_option_name [= view_option_value] [, ... ] ) ]
    AS <query>
    [ WITH [ CASCADED | LOCAL ] CHECK OPTION ]
Copy

Exemples de code

[OR REPLACE] [TEMP | TEMPORARY] [RECURSIVE]

Hint

Cette syntaxe est entièrement prise en charge par Snowflake.

Code d’entrée :

PostgreSQL
CREATE OR REPLACE VIEW view1 AS
    SELECT
        product_id,
        SUM(quantity) AS sum_quantity
    FROM
        table1
    GROUP BY
        product_id;

CREATE TEMPORARY RECURSIVE VIEW view2 AS
    SELECT
        product_id,
        SUM(quantity) AS sum_quantity
    FROM
        table1
    GROUP BY
        product_id;
Copy

Code de sortie :

Snowflake
CREATE OR REPLACE VIEW view1
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "postgresql",  "convertedOn": "05/14/2025",  "domain": "no-domain-provided" }}'
AS
    SELECT
        product_id,
        SUM(quantity) AS sum_quantity
    FROM
table1
    GROUP BY
        product_id;

CREATE TEMPORARY RECURSIVE VIEW view2
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "postgresql",  "convertedOn": "05/14/2025",  "domain": "no-domain-provided" }}'
AS
    SELECT
        product_id,
        SUM(quantity) AS sum_quantity
    FROM
table1
    GROUP BY
        product_id;
Copy

WITH CHECK CLAUSE

Cette clause WITH CHECK CLAUSE sur une vue impose à toute donnée insérée ou mise à jour via la vue de remplir les conditions de définition de la vue. LOCAL vérifie uniquement les conditions de la vue actuelle, tandis que CASCADED vérifie les conditions de la vue et de toutes les vues sous-jacentes. Cela empêche la création de lignes invisibles à travers la vue et qui ne peuvent pas être utilisées avec des vues récursives.

Danger

Cette syntaxe n’est pas prise en charge par Snowflake.

Code d’entrée :

PostgreSQL
CREATE VIEW updatable_products AS
    SELECT id, name, price
    FROM products
    WHERE price > 0
WITH LOCAL CHECK OPTION;
Copy

Code de sortie :

Snowflake
CREATE VIEW updatable_products
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "postgresql",  "convertedOn": "05/14/2025",  "domain": "no-domain-provided" }}'
AS
    SELECT id, name, price
    FROM
products
    WHERE price > 0;
Copy

WITH PARAMETERS OPTIONS

Ce WITH PARAMETERS OPTIONS permet de définir des propriétés facultatives pour la vue, telles que la manière dont les modifications de la vue sont vérifiées (check_option) et s’il faut appliquer la sécurité au niveau des lignes (security_barrier).

Danger

Cette syntaxe n’est pas prise en charge par Snowflake.

Code d’entrée :

PostgreSQL
CREATE VIEW large_orders WITH (security_barrier=true, check_option=local) AS
    SELECT order_id, customer_id, total_amount
    FROM orders
    WHERE total_amount > 1000;
Copy

Code de sortie :

Snowflake
CREATE VIEW large_orders
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "postgresql",  "convertedOn": "05/14/2025",  "domain": "no-domain-provided" }}'
AS
    SELECT order_id, customer_id, total_amount
    FROM
orders
    WHERE total_amount > 1000;
Copy

VALUES OPTION

Hint

Cette syntaxe est entièrement prise en charge par Snowflake.

Code d’entrée :

PostgreSQL
CREATE VIEW numbers_view (number_1) AS
    VALUES (1,2), (2,2), (3,2), (4,2), (5,2);
Copy

Code de sortie :

Snowflake
CREATE VIEW numbers_view
AS
SELECT
*
FROM
(
        VALUES (1,2), (2,2), (3,2), (4,2), (5,2)
) AS numbers_view (
        number_1
);
Copy