SnowConvert AI - SQL Server-Azure Synapse - システムテーブル¶
Transact-SQL システムテーブルの翻訳仕様
システムテーブル¶
Transact-SQL |
Snowflake SQL |
メモ |
|
|---|---|---|---|
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 |
サポート対象外 |
||
SYS.ALL_SQL_MODULES |
サポート対象外 |
||
SYS.ALLOCATION_UNITS |
サポート対象外 |
||
SYS.ASSEMBLY_MODULES |
サポート対象外 |
||
SYS.CHECK_CONSTRAINTS |
サポート対象外 |
||
SYS.COLUMN_STORE_DICTIONARIES |
サポート対象外 |
||
SYS.COLUMN_STORE_ROW_GROUPS |
サポート対象外 |
||
SYS.COLUMN_STORE_SEGMENTS |
サポート対象外 |
||
SYS.COMPUTED_COLUMNS |
サポート対象外 |
||
SYS.DEFAULT_CONSTRAINTS |
サポート対象外 |
||
SYS.EVENTS |
サポート対象外 |
||
SYS.EVENT_NOTIFICATIONS |
サポート対象外 |
||
SYS.EVENT_NOTIFICATION_EVENT_TYPES |
サポート対象外 |
||
SYS.EXTENDED_PROCEDURES |
サポート対象外 |
||
SYS.EXTERNAL_LANGUAGE_FILES |
サポート対象外 |
||
SYS.EXTERNAL_LANGUAGES |
サポート対象外 |
||
SYS.EXTERNAL_LIBRARIES |
サポート対象外 |
||
SYS.EXTERNAL_LIBRARY_FILES |
サポート対象外 |
||
SYS.FOREIGN_KEYS |
INFORMATION_SCHEMA.TABLE_CONSTRAINTS |
||
SYS.FOREIGN_KEY_COLUMNS |
サポート対象外 |
||
SYS.FUNCTION_ORDER_COLUMNS |
サポート対象外 |
||
SYS.HASH_INDEXES |
サポート対象外 |
||
SYS.INDEXES |
サポート対象外 |
||
SYS.INDEX_COLUMNS |
サポート対象外 |
||
SYS.INDEX_RESUMABLE_OPERATIONS |
サポート対象外 |
||
SYS.INTERNAL_PARTITIONS |
サポート対象外 |
||
SYS.INTERNAL_TABLES |
サポート対象外 |
||
SYS.KEY_CONSTRAINTS |
サポート対象外 |
||
SYS.MASKED_COLUMNS |
サポート対象外 |
||
SYS.MEMORY_OPTIMIZED_TABLES_INTERNAL_ATTRIBUTES |
サポート対象外 |
||
SYS.MODULE_ASSEMBLY_USAGES |
サポート対象外 |
||
SYS.NUMBERED_PROCEDURES |
サポート対象外 |
||
SYS.NUMBERED_PROCEDURE_PARAMETERS |
サポート対象外 |
||
SYS.PARAMETERS |
サポート対象外 |
||
SYS.PARTITIONS |
サポート対象外 |
||
SYS.PERIODS |
サポート対象外 |
||
SYS.SERVER_ASSEMBLY_MODULES |
サポート対象外 |
||
SYS.SERVER_EVENTS |
サポート対象外 |
||
SYS.SERVER_EVENTT_NOTIFICATIONS |
サポート対象外 |
||
SYS.SERVER_SQL_MODULE |
サポート対象外 |
||
SYS.SERVER_TRIGGERS |
サポート対象外 |
||
SYS._SERVER_TRIGGER_EVENTS |
サポート対象外 |
||
SYS.SQL_DEPENDENCIES |
サポート対象外 |
||
SYS.SQL_EXPRESSION_DEPENDENCIES |
サポート対象外 |
||
SYS.SQL_MODULES |
サポート対象外 |
||
SYS.STATS |
サポート対象外 |
||
SYS.STATS_COLUMNS |
サポート対象外 |
||
SYS.SYNONYMS |
サポート対象外 |
||
SYS.SYSTEM_COLUMNS |
サポート対象外 |
||
SYS.SYSTEM_OBJECTS |
サポート対象外 |
||
SYS.SYSTEM_PARAMETERS |
サポート対象外 |
||
SYS.SYSTEM_SQL_MODULES" |
サポート対象外 |
SYS.FOREIGN_KEYS¶
Applies to
SQL Server
Azure Synapse Analytics
注釈
わかりやすくするため、出力コードの一部を省略しています。
説明¶
FOREIGN KEY 制約であるオブジェクトごとの行を含みます(SQLServer ドキュメント)。
FOREIGN KEY (sys.foreign_keys)の列は以下の通りです。
列名 |
データ型 |
説明 |
Snowflakeに同等の列がある |
|---|---|---|---|
- |
このビューが継承する列のリストについては、 sys.objects (Transact-SQL). をご参照ください。 |
一部 |
|
referenced_object_id |
int |
参照されるオブジェクトの ID 。 |
無し |
key_index_id |
int |
参照オブジェクト内のキーインデックスの ID 。 |
無し |
is_disabled |
bit |
FOREIGN KEY 制約が無効です。 |
無し |
is_not_for_replication |
bit |
FOREIGN KEY 制約は、 NOT FOR REPLICATION オプションを使用して作成されました。 |
無し |
is_not_trusted |
bit |
FOREIGN KEY 制約がシステムによって検証されていません。 |
無し |
delete_referential_action |
tinyint |
削除が発生したときに、この FOREIGN KEY に対して宣言された参照アクション。SQLServer ドキュメント をご参照ください。 |
無し |
delete_referential_action_desc |
nvarchar(60) |
削除が発生したときに、この FOREIGN KEY に対して宣言された参照アクションの説明。SQLServer ドキュメント をご参照ください。 |
無し |
update_referential_action |
tinyint |
更新が発生したときに、この FOREIGN KEY に対して宣言された参照アクション。SQLServer ドキュメント をご参照ください。 |
無し |
update_referential_action_desc |
nvarchar(60) |
更新が発生したときに、この FOREIGN KEY に対して宣言された参照アクションの説明。SQLServer ドキュメント をご参照ください。 |
無し |
is_system_named |
bit |
1 = 名前がシステムによって生成されました。 |
無し |
sys.objects から継承される列は以下の通りです。
詳細は、 sys.objectsのドキュメント を参照してください。
列名 |
データ型 |
説明 |
Snowflakeに同等の列がある |
|---|---|---|---|
name |
sysname |
オブジェクト名。 |
有り |
object_id |
int |
オブジェクトの識別番号。データベース内で一意です。 |
無し |
principal_id |
int |
スキーマ所有者と異なる場合は、各所有者の ID 。 |
無し |
schema_id |
int |
オブジェクトが含まれるスキーマの ID 。 |
無し |
parent_object_id |
int |
このオブジェクトが属するオブジェクトの ID 。 |
無し |
type |
char(2) |
オブジェクト型 |
有り |
type_desc |
nvarchar(60) |
オブジェクト型の説明 |
有り |
create_date |
datetime |
オブジェクトが作成された日付。 |
有り |
modify_date |
datetime |
ALTER ステートメントを使用してオブジェクトが最後に変更された日付。 |
有り |
is_ms_shipped |
bit |
オブジェクトは、 SQL Serverの内部コンポーネントによって作成されます。 |
無し |
is_published |
bit |
オブジェクトは、 SQL Serverの内部コンポーネントによって作成されます。 |
無し |
is_schema_published |
bit |
オブジェクトのスキーマのみが公開されています。 |
無し |
警告
この場合、sys.foreign_keysについては、Snowflakeには同等のものがないことに注意してください。しかし、等価性はsys.objectsから継承された列の基になります。
適用可能な列の等価性¶
SQLServer |
Snowflake |
制限事項 |
適用可能 |
|---|---|---|---|
name |
CONSTRAINT_NAME |
データベースによって自動生成された名前は、ターゲットのSnowflakeの自動生成名に沿って確認されることがあります。 |
有り |
type |
CONSTRAINT_TYPE |
型列には様々なオプションがあります。しかし、この場合、サポートされるのは外部キーを表す'F'の文字だけです。 |
いいえ。すべてのテーブル制約の外部キーを判断するために追加の検証を行うため、適用できません。 |
type_desc |
CONSTRAINT_TYPE |
制限事項なし。 |
いいえ。すべてのテーブル制約の外部キーを判断するために追加の検証を行うため、適用できません。 |
create_date |
CREATED |
データ型の違い。 |
有り |
modify_date |
LAST_ALTERED |
データ型の違い。 |
有り |
parent_object_id |
CONSTRAINT_CATALOG, CONSTRAINT_SCHEMA, TABLE_NAME |
OBJECT_ID() 関数を使用するケースに対してのみ列が生成され、名前は有効なパターンを持ちます。 |
有り |
SQL Serverでの構文¶
SELECT ('column_name' | * )
FROM sys.foreign_keys;
Snowflakeの構文¶
SELECT ('column_name' | * )
FROM information_schema.table_constraints
WHERE CONSTRAINT_TYPE = 'FOREIGN KEY';
注釈
システム外部キーの等価性は、Snowflakeのin ormation_schema.table_constraintsのカタログビューであるため、外部キー制約を他の制約から識別するには、追加の「WHERE」句で制約のタイプを定義する必要があります。
サンプルソースパターン¶
以下のサンプルを正しく実行するには、以下のステートメントを実行する必要があります。
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.単純な選択ケース¶
SQL Server¶
SELECT *
FROM sys.foreign_keys;
結果¶
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';
結果¶
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 |
警告
列のオブジェクトの違いや等価性の欠落により、結果は異なります。結果を確認することができます。
2.名前列ケース¶
SQL Server¶
SELECT * FROM sys.foreign_keys WHERE name = 'FK_Name_Test';
結果¶
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';
結果¶
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 |
警告
制約名がデータベースによって自動生成され、クエリで使用される場合、この翻訳には検証が必要になることがあります。詳しくは 既知の問題 セクションをご覧ください。
3.親オブジェクト ID ケース¶
この例では、異なる列と同等の列を作成するための名前の処理を例示するために、データベースとスキーマを作成しました。
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')
結果¶
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';
結果¶
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 |
警告
OBJECT_ID()関数の中に入ってくる名前が有効なパターンでない場合、特殊文字に対する名前処理の制限により変換されません。
警告
Snowflakeで使用されているデータベースを確認します。
4.型列ケース¶
SQL Serverの「F」は「外部キー」を意味し、すべてのテーブル制約から外部キーを指定するために、末尾の検証により削除されます。
SQL Server¶
SELECT * FROM sys.foreign_keys WHERE type = 'F';
結果¶
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';
結果¶
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.型Desc列ケース¶
「type_desc」列は、すべてのテーブル制約から外部キーを指定するために、末尾の検証により削除されます。
SQL Server¶
SELECT
*
FROM
sys.foreign_keys
WHERE
type_desc = 'FOREIGN_KEY_CONSTRAINT';
結果¶
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';
結果¶
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.日付列の変更の単純なケース¶
SQL Server¶
SELECT *
FROM sys.foreign_keys
WHERE modify_date = CURRENT_TIMESTAMP;
結果¶
The query produced no results.
Snowflake¶
SELECT *
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE
LAST_ALTERED = CURRENT_TIMESTAMP()
AND CONSTRAINT_TYPE = 'FOREIGN KEY';
結果¶
The query produced no results.
7.DATEDIFF()ケースによる日付列の変更¶
次の例は、sys.objectsから継承されたsys.foreign_keysの列が関数 DATEDIFF の中にある、より複雑なシナリオを示しています。この場合、該当する等価性に対応する引数は、Snowflakeのinformation.schemaの対応する列に変更されます。
SQL Server¶
SELECT *
FROM sys.foreign_keys
WHERE DATEDIFF(DAY, modify_date, GETDATE()) <= 30;
結果¶
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';
結果¶
The foreign keys altered in the last 30 days.
8.日付列の作成ケース¶
SQL Server¶
SELECT *
FROM sys.foreign_keys
WHERE create_date = '2023-09-12 14:36:38.060';
結果¶
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';
結果¶
The foreign keys that were created on the specified date and time.
警告
クエリが実行された時間によって作成日が特定される場合、クエリ結果が変わる可能性があります。オリジンデータベースで指定されたクエリを一度に実行し、新しいSnowflakeクエリで別の時間にオブジェクトを実行することが可能です。
9.選択列単一名ケース¶
SQL Server¶
SELECT name
FROM sys.foreign_keys;
結果¶
name |
|---|
FK_Name_Test |
Snowflake¶
SELECT
CONSTRAINT_NAME
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE
CONSTRAINT_TYPE = 'FOREIGN KEY';
結果¶
CONSTRAINT_NAME |
|---|
FK_Name_Test |
10.選択列修飾名ケース¶
SQL Server¶
SELECT
fk.name
FROM sys.foreign_keys AS fk;
結果¶
name |
|---|
FK_Name_Test |
Snowflake¶
SELECT
fk.CONSTRAINT_NAME
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS fk
WHERE
CONSTRAINT_TYPE = 'FOREIGN KEY';
結果¶
CONSTRAINT_NAME |
|---|
FK_Name_Test |
既知の問題¶
1.制約にユーザーが作成した名前がない場合、「name」列は正しい出力を示さないことがあります¶
もし参照された名前がデータベースから自動生成されたものであれば、それを見直して希望の値を使用することができるでしょう。
2.列を選択する場合、Snowflakeで同等の適用可能な列に応じて制限があります¶
sys.foreign_keysの列はSnowflakeでは完全に等価ではないため、等価性の制限により結果が変わる場合があります。
3.OBJECT_ID()関数が処理すべき有効なパターンを持っているか、データベース、スキーマ、またはテーブルを抽出できませんでした¶
OBJECT_ID()関数を受け取った名前に基づいて、この名前の処理は制限され、形式に依存します。
4.OBJECT_NAME()関数ケースを使用した名前列¶
OBJECT_NAME()関数はまだサポートされていないため、この関数に関連する変換はサポートされていません。
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';