SnowConvert AI - Serveur SQL-Azure Synapse - Tables système¶
Spécification de traduction pour les tables systèmes Transact-SQL
Tables du système¶
Transact-SQL |
Snowflake SQL |
Remarques |
|
|---|---|---|---|
SYS.ALL_VIEWS |
INFORMATION_SCHEMA.VIEWS |
||
SYS.ALL_COLUMNS |
INFORMATION_SCHEMA.COLUMNS |
||
SYS.COLUMNS |
INFORMATION_SCHEMA.COLUMNS |
||
SYS.OBJECTS |
INFORMATION_SCHEMA.OBJECT_PRIVILEGES |
||
SYS.PROCEDURES |
INFORMATION_SCHEMA.PROCEDURES |
||
SYS.SEQUENCES |
INFORMATION_SCHEMA.SEQUENCES |
||
SYS.ALL_OBJECTS |
INFORMATION_SCHEMA.OBJECT_PRIVILEGES |
||
ALL_PARAMETERS |
Non pris en charge |
||
SYS.ALL_SQL_MODULES |
Non pris en charge |
||
SYS.ALLOCATION_UNITS |
Non pris en charge |
||
SYS.ASSEMBLY_MODULES |
Non pris en charge |
||
SYS.CHECK_CONSTRAINTS |
Non pris en charge |
||
SYS.COLUMN_STORE_DICTIONARIES |
Non pris en charge |
||
SYS.COLUMN_STORE_ROW_GROUPS |
Non pris en charge |
||
SYS.COLUMN_STORE_SEGMENTS |
Non pris en charge |
||
SYS.COMPUTED_COLUMNS |
Non pris en charge |
||
SYS.DEFAULT_CONSTRAINTS |
Non pris en charge |
||
SYS.EVENTS |
Non pris en charge |
||
SYS.EVENT_NOTIFICATIONS |
Non pris en charge |
||
SYS.EVENT_NOTIFICATION_EVENT_TYPES |
Non pris en charge |
||
SYS.EXTENDED_PROCEDURES |
Non pris en charge |
||
SYS.EXTERNAL_LANGUAGE_FILES |
Non pris en charge |
||
SYS.EXTERNAL_LANGUAGES |
Non pris en charge |
||
SYS.EXTERNAL_LIBRARIES |
Non pris en charge |
||
SYS.EXTERNAL_LIBRARY_FILES |
Non pris en charge |
||
SYS.FOREIGN_KEYS |
INFORMATION_SCHEMA.TABLE_CONSTRAINTS |
||
SYS.FOREIGN_KEY_COLUMNS |
Non pris en charge |
||
SYS.FUNCTION_ORDER_COLUMNS |
Non pris en charge |
||
SYS.HASH_INDEXES |
Non pris en charge |
||
SYS.INDEXES |
Non pris en charge |
||
SYS.INDEX_COLUMNS |
Non pris en charge |
||
SYS.INDEX_RESUMABLE_OPERATIONS |
Non pris en charge |
||
SYS.INTERNAL_PARTITIONS |
Non pris en charge |
||
SYS.INTERNAL_TABLES |
Non pris en charge |
||
SYS.KEY_CONSTRAINTS |
Non pris en charge |
||
SYS.MASKED_COLUMNS |
Non pris en charge |
||
SYS.MEMORY_OPTIMIZED_TABLES_INTERNAL_ATTRIBUTES |
Non pris en charge |
||
SYS.MODULE_ASSEMBLY_USAGES |
Non pris en charge |
||
SYS.NUMBERED_PROCEDURES |
Non pris en charge |
||
SYS.NUMBERED_PROCEDURE_PARAMETERS |
Non pris en charge |
||
SYS.PARAMETERS |
Non pris en charge |
||
SYS.PARTITIONS |
Non pris en charge |
||
SYS.PERIODS |
Non pris en charge |
||
SYS.SERVER_ASSEMBLY_MODULES |
Non pris en charge |
||
SYS.SERVER_EVENTS |
Non pris en charge |
||
SYS.SERVER_EVENTT_NOTIFICATIONS |
Non pris en charge |
||
SYS.SERVER_SQL_MODULE |
Non pris en charge |
||
SYS.SERVER_TRIGGERS |
Non pris en charge |
||
SYS._SERVER_TRIGGER_EVENTS |
Non pris en charge |
||
SYS.SQL_DEPENDENCIES |
Non pris en charge |
||
SYS.SQL_EXPRESSION_DEPENDENCIES |
Non pris en charge |
||
SYS.SQL_MODULES |
Non pris en charge |
||
SYS.STATS |
Non pris en charge |
||
SYS.STATS_COLUMNS |
Non pris en charge |
||
SYS.SYNONYMS |
Non pris en charge |
||
SYS.SYSTEM_COLUMNS |
Non pris en charge |
||
SYS.SYSTEM_OBJECTS |
Non pris en charge |
||
SYS.SYSTEM_PARAMETERS |
Non pris en charge |
||
SYS.SYSTEM_SQL_MODULES » |
Non pris en charge |
SYS.FOREIGN_KEYS¶
Applies to
SQL Server
Azure Synapse Analytics
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
Contient une ligne par objet qui est une contrainte FOREIGN KEY (documentation SQLServer).
Les colonnes de FOREIGN KEY (sys.foreign_keys) sont les suivantes :
Nom de la colonne |
Type de données |
Description |
A une colonne équivalente dans Snowflake |
|---|---|---|---|
- |
Pour une liste des colonnes dont cette vue hérite, voir [sys.objects (Transact-SQL).] (https://learn.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-objects-transact-sql?view=sql-server-ver16) |
Partiel |
|
referenced_object_id |
int |
ID de l’objet référencé. |
Non |
key_index_id |
int |
ID de l’index de clés dans l’objet référencé. |
Non |
is_disabled |
bit |
La contrainte FOREIGN KEY est désactivée. |
Non |
is_not_for_replication |
bit |
La contrainte FOREIGN KEY a été créée en utilisant l’option NOT FOR REPLICATION. |
Non |
is_not_trusted |
bit |
La contrainte FOREIGN KEY n’a pas été vérifiée par le système. |
Non |
delete_referential_action |
tinyint |
L’action de référence qui a été déclarée pour cette FOREIGN KEY lorsqu’une suppression se produit. Voir la documentation SQLServer. |
Non |
delete_referential_action_desc |
nvarchar(60) |
Description de l’action de référence qui a été déclarée pour cette FOREIGN KEY lorsqu’une suppression se produit. Voir la documentation SQLServer. |
Non |
update_referential_action |
tinyint |
L’action de référence qui a été déclarée pour cette FOREIGN KEY lorsqu’une mise à jour se produit. Voir la documentation SQLServer. |
Non |
update_referential_action_desc |
nvarchar(60) |
Description de l’action de référence qui a été déclarée pour cette FOREIGN KEY lorsqu’une mise à jour se produit. Voir la documentation SQLServer. |
Non |
is_system_named |
bit |
1 = Le nom a été généré par le système. |
Non |
Les colonnes héritées de sys.objects sont les suivantes :
Pour plus d’informations, consultez la documentation sys.objects.
Nom de la colonne |
Type de données |
Description |
A une colonne équivalente dans Snowflake |
|---|---|---|---|
name |
sysname |
Nom d’objet. |
Oui |
object_id |
int |
Numéro d’identification d’objet. Est unique dans une base de données. |
Non |
principal_id |
int |
ID du propriétaire individuel, s’il est différent du propriétaire du schéma. |
Non |
schema_id |
int |
ID du schéma dans lequel l’objet est contenu. |
Non |
parent_object_id |
int |
ID de l’objet auquel appartient cet objet. |
Non |
type |
char(2) |
Type d’objet |
Oui |
type_desc |
nvarchar(60) |
Description du type d’objet |
Oui |
create_date |
datetime |
Date de création de l’objet. |
Oui |
modify_date |
datetime |
Date de la dernière modification de l’objet en utilisant une instruction ALTER. |
Oui |
is_ms_shipped |
bit |
L’objet est créé par un composant Serveur SQL. |
Non |
is_published |
bit |
L’objet est créé par un composant Serveur SQL. |
Non |
is_schema_published |
bit |
Seul le schéma de l’objet est publié. |
Non |
Avertissement
Remarquez que, dans ce casse, pour les sys.foreign_keys, il n’y a pas d’équivalence dans Snowflake. Mais, l’équivalence se fait sous les colonnes héritées de sys.objects.
Équivalence des colonnes applicables¶
SQLServer |
Snowflake |
Limitations |
Applicable |
|---|---|---|---|
name |
CONSTRAINT_NAME |
Les noms générés automatiquement par la base de données peuvent être remplacés par le nom généré automatiquement par Snowflake cible, |
Oui |
type |
CONSTRAINT_TYPE |
La colonne de type propose de nombreuses options. Mais, dans ce cas, la prise en charge ne concerne que la lettre « F » qui représente les clés étrangères. |
Non. En raison de la validation supplémentaire pour déterminer les clés étrangères à partir de toutes les contraintes de table, cette fonction n’est pas applicable. |
type_desc |
CONSTRAINT_TYPE |
Aucune limitation trouvée. |
Non. En raison de la validation supplémentaire pour déterminer les clés étrangères à partir de toutes les contraintes de table, cette fonction n’est pas applicable. |
create_date |
CREATED |
Différences de types de données. |
Oui |
modify_date |
LAST_ALTERED |
Différences de types de données. |
Oui |
parent_object_id |
CONSTRAINT_CATALOG, CONSTRAINT_SCHEMA, TABLE_NAME |
Les colonnes ne sont générées que pour les cas qui utilisent la fonction OBJECT_ID() et, le nom a un modèle valide. |
Oui |
Syntaxe dans SQL Server¶
SELECT ('column_name' | * )
FROM sys.foreign_keys;
Syntaxe dans Snowflake¶
SELECT ('column_name' | * )
FROM information_schema.table_constraints
WHERE CONSTRAINT_TYPE = 'FOREIGN KEY';
Note
Comme l’équivalence pour les clés étrangères du système est la vue du catalogue dans Snowflake pour les contraintes d’information _schema.table_, il est nécessaire de définir le type de la contrainte dans une clause supplémentaire “WHERE” pour identifier les contraintes de clé étrangère par rapport aux autres contraintes.
Modèles d’échantillons de sources¶
Pour accomplir correctement les exemples suivants, il est nécessaire d’exécuter les instructions suivantes :
SQL Server¶
CREATE TABLE Customers (
CustomerID INT PRIMARY KEY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Email VARCHAR(100)
);
CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
CustomerID INT,
OrderDate DATE,
TotalAmount DECIMAL(10, 2),
CONSTRAINT FK_Name_Test FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);
INSERT INTO Customers (CustomerID, FirstName, LastName, Email)
VALUES
(1, 'John', 'Doe', 'john.doe@example.com'),
(2, 'Jane', 'Smith', 'jane.smith@example.com');
INSERT INTO Orders (OrderID, CustomerID, OrderDate, TotalAmount)
VALUES
(101, 1, '2023-09-01', 100.50),
(102, 1, '2023-09-02', 75.25),
(103, 2, '2023-09-03', 50.00);
Snowflake¶
CREATE OR REPLACE TABLE Customers (
CustomerID INT PRIMARY KEY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Email VARCHAR(100)
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"transact"}}'
;
CREATE OR REPLACE TABLE Orders (
OrderID INT PRIMARY KEY,
CustomerID INT,
OrderDate DATE,
TotalAmount DECIMAL(10, 2),
CONSTRAINT FK_Name_Test FOREIGN KEY (CustomerID) REFERENCES Customers (CustomerID)
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"transact"}}'
;
INSERT INTO Customers (CustomerID, FirstName, LastName, Email)
VALUES
(1, 'John', 'Doe', 'john.doe@example.com'),
(2, 'Jane', 'Smith', 'jane.smith@example.com');
INSERT INTO Orders (OrderID, CustomerID, OrderDate, TotalAmount)
VALUES
(101, 1, '2023-09-01', 100.50),
(102, 1, '2023-09-02', 75.25),
(103, 2, '2023-09-03', 50.00);
1. Simple Select Case¶
SQL Server¶
SELECT *
FROM sys.foreign_keys;
Résultat¶
name |
object_id |
principal_id |
schema_id |
type |
type_desc |
create_date |
modify_date |
parent_object_id |
is_ms_shipped |
is_published |
is_schema_published |
referenced_object_id |
key_index_id |
is_disabled |
is_not_for_replication |
is_not_trusted |
delete_referential_action |
delete_referential_action_desc |
update_referential_action |
update_referential_action_desc |
is_system_named |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
FK_Name_Test |
1719677174 |
NULL |
1 |
F |
FOREIGN_KEY_CONSTRAINT |
2023-09-11 22:20:04.160 |
2023-09-11 22:20:04.160 |
1687677060 |
false |
true |
false |
1655676946 |
1 |
false |
false |
0 |
NO_ACTION |
0 |
NO_ACTION |
true |
Snowflake¶
SELECT *
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE
CONSTRAINT_TYPE = 'FOREIGN KEY';
Résultat¶
CONSTRAINT_CATALOG |
CONSTRAINT_SCHEMA |
CONSTRAINT_NAME |
TABLE_CATALOG |
TABLE_SCHEMA |
TABLE_NAME |
CONSTRAINT_TYPE |
IS_DEFERRABLE |
INITIALLY_DEFERRED |
ENFORCED |
COMMENT |
CREATED |
LAST_ALTERED |
RELY |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
DBTEST |
PUBLIC |
FK_Name_Test |
DATETEST |
PUBLIC |
ORDERS |
FOREIGN KEY |
NO |
YES |
NO |
null |
2023-09-11 15:23:51.969 -0700 |
2023-09-11 15:23:52.097 -0700 |
NO |
Avertissement
Les résultats diffèrent en raison des différences dans les objets des colonnes et de l’équivalence manquante. Le résultat peut être vérifié.
2. Name Column Case¶
SQL Server¶
SELECT * FROM sys.foreign_keys WHERE name = 'FK_Name_Test';
Résultat¶
name |
object_id |
principal_id |
schema_id |
type |
type_desc |
create_date |
modify_date |
parent_object_id |
is_ms_shipped |
is_published |
is_schema_published |
referenced_object_id |
key_index_id |
is_disabled |
is_not_for_replication |
is_not_trusted |
delete_referential_action |
delete_referential_action_desc |
update_referential_action |
update_referential_action_desc |
is_system_named |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
FK_Name_Test |
1719677174 |
NULL |
1 |
F |
FOREIGN_KEY_CONSTRAINT |
2023-09-11 22:20:04.160 |
2023-09-11 22:20:04.160 |
1687677060 |
false |
true |
false |
1655676946 |
1 |
false |
false |
0 |
NO_ACTION |
0 |
NO_ACTION |
true |
Snowflake¶
SELECT * FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE
CONSTRAINT_NAME = 'FK_NAME_TEST'
AND CONSTRAINT_TYPE = 'FOREIGN KEY';
Résultat¶
CONSTRAINT_CATALOG |
CONSTRAINT_SCHEMA |
CONSTRAINT_NAME |
TABLE_CATALOG |
TABLE_SCHEMA |
TABLE_NAME |
CONSTRAINT_TYPE |
IS_DEFERRABLE |
INITIALLY_DEFERRED |
ENFORCED |
COMMENT |
CREATED |
LAST_ALTERED |
RELY |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
DBTEST |
PUBLIC |
FK_Name_Test |
DATETEST |
PUBLIC |
ORDERS |
FOREIGN KEY |
NO |
YES |
NO |
null |
2023-09-11 15:23:51.969 -0700 |
2023-09-11 15:23:52.097 -0700 |
NO |
Avertissement
Cette traduction peut nécessiter une vérification si le nom de la contrainte est généré automatiquement par la base de données et utilisé dans la requête. Pour plus d’informations, consultez la section Problèmes connus.
3. Parent Object ID Case¶
Dans cet exemple, une base de données et un schéma ont été créés pour illustrer le traitement des noms afin de créer des colonnes différentes et équivalentes.
SQL Server¶
use database_name_test
create schema schema_name_test
CREATE TABLE schema_name_test.Customers (
CustomerID INT PRIMARY KEY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Email VARCHAR(100)
);
CREATE TABLE schema_name_test.Orders (
OrderID INT PRIMARY KEY,
CustomerID INT,
OrderDate DATE,
TotalAmount DECIMAL(10, 2),
CONSTRAINT FK_Name_Test FOREIGN KEY (CustomerID) REFERENCES schema_name_test.Customers(CustomerID)
);
INSERT INTO schema_name_test.Customers (CustomerID, FirstName, LastName, Email)
VALUES
(1, 'John', 'Doe', 'john.doe@example.com'),
(2, 'Jane', 'Smith', 'jane.smith@example.com');
INSERT INTO schema_name_test.Orders (OrderID, CustomerID, OrderDate, TotalAmount)
VALUES
(101, 1, '2023-09-01', 100.50),
(102, 1, '2023-09-02', 75.25),
(103, 2, '2023-09-03', 50.00);
SELECT * FROM sys.foreign_keys WHERE name = 'FK_Name_Test' AND parent_object_id = OBJECT_ID(N'database_name_test.schema_name_test.Orders')
Résultat¶
name |
object_id |
principal_id |
schema_id |
type |
type_desc |
create_date |
modify_date |
parent_object_id |
is_ms_shipped |
is_published |
is_schema_published |
referenced_object_id |
key_index_id |
is_disabled |
is_not_for_replication |
is_not_trusted |
delete_referential_action |
delete_referential_action_desc |
update_referential_action |
update_referential_action_desc |
is_system_named |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
FK_Name_Test |
1719677174 |
NULL |
1 |
F |
FOREIGN_KEY_CONSTRAINT |
2023-09-11 22:20:04.160 |
2023-09-11 22:20:04.160 |
1687677060 |
false |
true |
false |
1655676946 |
1 |
false |
false |
0 |
NO_ACTION |
0 |
NO_ACTION |
true |
Snowflake¶
USE DATABASE database_name_test;
CREATE SCHEMA IF NOT EXISTS schema_name_test
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "transact", "convertedOn": "07/11/2025", "domain": "no-domain-provided" }}'
;
CREATE OR REPLACE TABLE schema_name_test.Customers (
CustomerID INT PRIMARY KEY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Email VARCHAR(100)
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "transact", "convertedOn": "07/11/2025", "domain": "no-domain-provided" }}'
;
CREATE OR REPLACE TABLE schema_name_test.Orders (
OrderID INT PRIMARY KEY,
CustomerID INT,
OrderDate DATE,
TotalAmount DECIMAL(10, 2),
CONSTRAINT FK_Name_Test FOREIGN KEY (CustomerID) REFERENCES schema_name_test.Customers (CustomerID)
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "transact", "convertedOn": "07/11/2025", "domain": "no-domain-provided" }}'
;
INSERT INTO schema_name_test.Customers (CustomerID, FirstName, LastName, Email)
VALUES
(1, 'John', 'Doe', 'john.doe@example.com'),
(2, 'Jane', 'Smith', 'jane.smith@example.com');
INSERT INTO schema_name_test.Orders (OrderID, CustomerID, OrderDate, TotalAmount)
VALUES
(101, 1, '2023-09-01', 100.50),
(102, 1, '2023-09-02', 75.25),
(103, 2, '2023-09-03', 50.00);
SELECT * FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE
CONSTRAINT_NAME = 'FK_NAME_TEST'
AND CONSTRAINT_CATALOG = 'DATABASE_NAME_TEST'
AND CONSTRAINT_SCHEMA = 'SCHEMA_NAME_TEST'
AND TABLE_NAME = 'ORDERS'
AND CONSTRAINT_TYPE = 'FOREIGN KEY';
Résultat¶
CONSTRAINT_CATALOG |
CONSTRAINT_SCHEMA |
CONSTRAINT_NAME |
TABLE_CATALOG |
TABLE_SCHEMA |
TABLE_NAME |
CONSTRAINT_TYPE |
IS_DEFERRABLE |
INITIALLY_DEFERRED |
ENFORCED |
COMMENT |
CREATED |
LAST_ALTERED |
RELY |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
DATABASE_NAME_TEST |
SCHEMA_NAME_TEST |
FK_Name_Test |
DATABASE_NAME_TEST |
SCHEMA_NAME_TEST |
ORDERS |
FOREIGN KEY |
NO |
YES |
NO |
null |
2023-09-11 15:23:51.969 -0700 |
2023-09-11 15:23:52.097 -0700 |
NO |
Avertissement
Si le nom entrant dans la fonction OBJECT_ID() n’a pas de modèle valide, il ne sera pas converti en raison des limites de traitement des noms sur les caractères spéciaux.
Avertissement
Passez en revue la base de données utilisée dans Snowflake.
4. Type Column Case¶
Le « F » dans SQL Server signifie « Foreign Key » (clé étrangère) et il est supprimé en raison de la validation à la fin pour spécifier la clé étrangère à partir de toutes les contraintes de la table.
SQL Server¶
SELECT * FROM sys.foreign_keys WHERE type = 'F';
Résultat¶
name |
object_id |
principal_id |
schema_id |
type |
type_desc |
create_date |
modify_date |
parent_object_id |
is_ms_shipped |
is_published |
is_schema_published |
referenced_object_id |
key_index_id |
is_disabled |
is_not_for_replication |
is_not_trusted |
delete_referential_action |
delete_referential_action_desc |
update_referential_action |
update_referential_action_desc |
is_system_named |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
FK_Name_Test |
1719677174 |
NULL |
3 |
F |
FOREIGN_KEY_CONSTRAINT |
2023-09-11 22:20:04.160 |
2023-09-11 22:20:04.160 |
1687677060 |
false |
true |
false |
1655676946 |
1 |
false |
false |
0 |
NO_ACTION |
0 |
NO_ACTION |
true |
Snowflake¶
SELECT * FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE
type = 'F' AND CONSTRAINT_TYPE = 'FOREIGN KEY';
Résultat¶
CONSTRAINT_CATALOG |
CONSTRAINT_SCHEMA |
CONSTRAINT_NAME |
TABLE_CATALOG |
TABLE_SCHEMA |
TABLE_NAME |
CONSTRAINT_TYPE |
IS_DEFERRABLE |
INITIALLY_DEFERRED |
ENFORCED |
COMMENT |
CREATED |
LAST_ALTERED |
RELY |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
DBTEST |
PUBLIC |
FK_Name_Test |
DATETEST |
PUBLIC |
ORDERS |
FOREIGN KEY |
NO |
YES |
NO |
null |
2023-09-11 15:23:51.969 -0700 |
2023-09-11 15:23:52.097 -0700 |
NO |
5. Type Desc Column Case¶
La colonne « type_desc » est supprimée en raison de la validation à la fin pour spécifier la clé étrangère à partir de toutes les contraintes de la table.
SQL Server¶
SELECT
*
FROM
sys.foreign_keys
WHERE
type_desc = 'FOREIGN_KEY_CONSTRAINT';
Résultat¶
name |
object_id |
principal_id |
schema_id |
type |
type_desc |
create_date |
modify_date |
parent_object_id |
is_ms_shipped |
is_published |
is_schema_published |
referenced_object_id |
key_index_id |
is_disabled |
is_not_for_replication |
is_not_trusted |
delete_referential_action |
delete_referential_action_desc |
update_referential_action |
update_referential_action_desc |
is_system_named |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
FK_Name_Test |
1719677174 |
NULL |
3 |
F |
FOREIGN_KEY_CONSTRAINT |
2023-09-11 22:20:04.160 |
2023-09-11 22:20:04.160 |
1687677060 |
false |
true |
false |
1655676946 |
1 |
false |
false |
0 |
NO_ACTION |
0 |
NO_ACTION |
true |
Snowflake¶
SELECT
*
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE
type_desc = 'FOREIGN_KEY_CONSTRAINT' AND CONSTRAINT_TYPE = 'FOREIGN KEY';
Résultat¶
CONSTRAINT_CATALOG |
CONSTRAINT_SCHEMA |
CONSTRAINT_NAME |
TABLE_CATALOG |
TABLE_SCHEMA |
TABLE_NAME |
CONSTRAINT_TYPE |
IS_DEFERRABLE |
INITIALLY_DEFERRED |
ENFORCED |
COMMENT |
CREATED |
LAST_ALTERED |
RELY |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
DBTEST |
PUBLIC |
FK_Name_Test |
DATETEST |
PUBLIC |
ORDERS |
FOREIGN KEY |
NO |
YES |
NO |
null |
2023-09-11 15:23:51.969 -0700 |
2023-09-11 15:23:52.097 -0700 |
NO |
6. Modify Date Column Simple Case¶
SQL Server¶
SELECT *
FROM sys.foreign_keys
WHERE modify_date = CURRENT_TIMESTAMP;
Résultat¶
The query produced no results.
Snowflake¶
SELECT *
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE
LAST_ALTERED = CURRENT_TIMESTAMP()
AND CONSTRAINT_TYPE = 'FOREIGN KEY';
Résultat¶
The query produced no results.
7. Modify Date Column with DATEDIFF() Case¶
L’exemple suivant montre un scénario plus complexe dans lequel les colonnes de sys.foreign_keys (héritées de sys.objects) se trouvent à l’intérieur d’une fonction DATEDIFF. Dans ce cas, l’argument correspondant à l’équivalence applicable est remplacé par la colonne correspondante du schéma information.schema dans Snowflake.
SQL Server¶
SELECT *
FROM sys.foreign_keys
WHERE DATEDIFF(DAY, modify_date, GETDATE()) <= 30;
Résultat¶
The foreign keys altered in the last 30 days.
Snowflake¶
SELECT *
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE
DATEDIFF(DAY, LAST_ALTERED, CURRENT_TIMESTAMP() :: TIMESTAMP) <= 30
AND CONSTRAINT_TYPE = 'FOREIGN KEY';
Résultat¶
The foreign keys altered in the last 30 days.
8. Create Date Column Case¶
SQL Server¶
SELECT *
FROM sys.foreign_keys
WHERE create_date = '2023-09-12 14:36:38.060';
Résultat¶
The foreign keys that were created on the specified date and time.
Snowflake¶
SELECT *
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE
CREATED = '2023-09-12 14:36:38.060'
AND CONSTRAINT_TYPE = 'FOREIGN KEY';
Résultat¶
The foreign keys that were created on the specified date and time.
Avertissement
Le résultat peut changer si la date de création est spécifique en raison de l’heure à laquelle les requêtes ont été exécutées. Il est possible d’exécuter une requête spécifique à un moment donné sur la base de données d’origine, puis d’exécuter les objets à un autre moment dans les nouvelles requêtes Snowflake.
9. Selected Columns Single Name Case¶
SQL Server¶
SELECT name
FROM sys.foreign_keys;
Résultat¶
name |
|---|
FK_Name_Test |
Snowflake¶
SELECT
CONSTRAINT_NAME
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE
CONSTRAINT_TYPE = 'FOREIGN KEY';
Résultat¶
CONSTRAINT_NAME |
|---|
FK_Name_Test |
10. Selected Columns Qualified Name Case¶
SQL Server¶
SELECT
fk.name
FROM sys.foreign_keys AS fk;
Résultat¶
name |
|---|
FK_Name_Test |
Snowflake¶
SELECT
fk.CONSTRAINT_NAME
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS fk
WHERE
CONSTRAINT_TYPE = 'FOREIGN KEY';
Résultat¶
CONSTRAINT_NAME |
|---|
FK_Name_Test |
Problèmes connus¶
1. The “name” column may not show a correct output if the constraint does not have a user-created name¶
Si la référence est un nom généré automatiquement à partir de la base de données, il est probable qu’elle soit révisée et que la valeur souhaitée soit utilisée.
2. When selecting columns, there is a limitation that depends on the applicable columns that are equivalent in Snowflake¶
Les colonnes de sys.foreign_keys n’étant pas complètement équivalentes dans Snowflake, certains résultats peuvent changer en raison des limites d’équivalence.
3. The OBJECT_ID() function may have a valid pattern to be processed or the database, schema or table could not be extracted¶
En fonction du nom qui reçoit la fonction OBJECT_ID(), le traitement de ce nom sera limité et dépendra du formatage.
4. Name Column With OBJECT_NAME() Function Case¶
La fonction OBJECT_NAME() n’étant pas encore prise en charge, les transformations liées à cette fonction ne sont pas prises en charge.
SQL Server¶
SELECT name AS ForeignKeyName,
OBJECT_NAME(parent_object_id) AS ReferencingTable,
OBJECT_NAME(referenced_object_id) AS ReferencedTable
FROM sys.foreign_keys;
Snowflake¶
SELECT
name AS ForeignKeyName,
OBJECT_NAME(parent_object_id) !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'OBJECT_NAME' NODE ***/!!! AS ReferencingTable,
OBJECT_NAME(referenced_object_id) !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'OBJECT_NAME' NODE ***/!!! AS ReferencedTable
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE
CONSTRAINT_TYPE = 'FOREIGN KEY';