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 서버
Azure 시냅스 분석
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명¶
오브젝트 당 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에 동등한 열이 있습니다. |
|---|---|---|---|
이름 |
sysname |
오브젝트 이름입니다. |
예 |
object_id |
int |
오브젝트 식별 번호입니다. 데이터베이스 내에서 고유합니다. |
아니요 |
principal_id |
int |
스키마 소유자와 다른 경우 개별 소유자의 ID입니다. |
아니요 |
schema_id |
int |
오브젝트가 포함된 스키마의 ID입니다. |
아니요 |
parent_object_id |
int |
이 오브젝트가 속한 오브젝트의 ID입니다. |
아니요 |
타입 |
char(2) |
오브젝트 타입 |
예 |
type_desc |
nvarchar(60) |
오브젝트 유형에 대한 설명입니다. |
예 |
create_date |
날짜/시간 |
오브젝트가 생성된 날짜입니다. |
예 |
modify_date |
날짜/시간 |
ALTER 문을 사용하여 오브젝트를 마지막으로 수정한 날짜입니다. |
예 |
is_ms_shipped |
bit |
오브젝트는 내부 SQL Server 구성 요소에서 생성됩니다. |
아니요 |
is_published |
bit |
오브젝트는 내부 SQL Server 구성 요소에서 생성됩니다. |
아니요 |
is_schema_published |
bit |
오브젝트의 스키마만 게시됩니다. |
아니요 |
경고
이 경우 sys.foreign_keys의 경우 Snowflake에 동등성이 없다는 점에 유의하십시오. 그러나 동등성은 sys.objects에서 상속된 열에서 기본적으로 생성됩니다.
애플리케이션 열 등가성¶
SQLServer |
Snowflake |
제한 사항 |
적용 가능 |
|---|---|---|---|
이름 |
CONSTRAINT_NAME |
데이터베이스에서 자동 생성된 이름은 대상 Snowflake에서 자동 생성된 이름으로 검토될 수 있습니다. |
예 |
타입 |
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 서버의 구문¶
SELECT ('column_name' | * )
FROM sys.foreign_keys;
Snowflake의 구문¶
SELECT ('column_name' | * )
FROM information_schema.table_constraints
WHERE CONSTRAINT_TYPE = 'FOREIGN KEY';
참고
시스템 외래 키에 대한 등가물은 Snowflake의 카탈로그 뷰에서 ormation_schema.table_constraints이므로, 다른 제약 조건에서 외래 키 제약 조건을 식별하려면 추가 ‘WHERE’ 절에서 제약 조건의 유형을 정의해야 합니다.
샘플 소스 패턴¶
다음 샘플을 올바르게 수행하려면 다음 문을 실행해야 합니다.
SQL 서버¶
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 서버¶
SELECT *
FROM sys.foreign_keys;
결과¶
이름 |
object_id |
principal_id |
schema_id |
타입 |
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. Name Column Case¶
SQL 서버¶
SELECT * FROM sys.foreign_keys WHERE name = 'FK_Name_Test';
결과¶
이름 |
object_id |
principal_id |
schema_id |
타입 |
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. Parent Object ID Case¶
이 예제에서는 서로 다른 동등한 열을 생성하기 위한 이름 처리의 예시를 보여주기 위해 데이터베이스와 스키마를 생성했습니다.
SQL 서버¶
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')
결과¶
이름 |
object_id |
principal_id |
schema_id |
타입 |
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. Type Column Case¶
SQL 서버의 ‘F’는 ‘외래 키’를 의미하며, 모든 테이블 제약 조건에서 외래 키를 지정하기 위해 마지막에 유효성 검사로 인해 제거됩니다.
SQL 서버¶
SELECT * FROM sys.foreign_keys WHERE type = 'F';
결과¶
이름 |
object_id |
principal_id |
schema_id |
타입 |
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. Type Desc Column Case¶
‘type_desc’ 열은 모든 테이블 제약 조건에서 외래 키를 지정하기 위해 끝 부분의 유효성 검사로 인해 제거됩니다.
SQL 서버¶
SELECT
*
FROM
sys.foreign_keys
WHERE
type_desc = 'FOREIGN_KEY_CONSTRAINT';
결과¶
이름 |
object_id |
principal_id |
schema_id |
타입 |
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. Modify Date Column Simple Case¶
SQL 서버¶
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. Modify Date Column with DATEDIFF() Case¶
다음 예제에서는 sys.foreign_keys(sys.objects에서 상속된)의 열이 DATEDIFF 함수의 내부에 있는 보다 복잡한 시나리오를 보여줍니다. 이 경우 해당 등가물에 해당하는 인자는 Snowflake의 Information Schema에서 해당 열로 변경됩니다.
SQL 서버¶
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. Create Date Column Case¶
SQL 서버¶
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. Selected Columns Single Name Case¶
SQL 서버¶
SELECT name
FROM sys.foreign_keys;
결과¶
이름 |
|---|
FK_Name_Test |
Snowflake¶
SELECT
CONSTRAINT_NAME
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE
CONSTRAINT_TYPE = 'FOREIGN KEY';
결과¶
CONSTRAINT_NAME |
|---|
FK_Name_Test |
10. Selected Columns Qualified Name Case¶
SQL 서버¶
SELECT
fk.name
FROM sys.foreign_keys AS fk;
결과¶
이름 |
|---|
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 |
Known Issues¶
1. The ‘name’ column may not show a correct output if the constraint does not have a user-created name¶
참조된 이름이 데이터베이스에서 자동 생성된 이름인 경우 이를 검토하여 원하는 값을 사용할 가능성이 높습니다.
2. When selecting columns, there is a limitation that depends on the applicable columns that are equivalent in Snowflake¶
Sys.foreign_keys의 열은 Snowflake에서 완전히 동일하지 않으므로 동등성 제한으로 인해 일부 결과가 변경될 수 있습니다.
3. The OBJECT_ID() function may have a valid pattern to be processed or the database, schema or table could not be extracted¶
OBJECT_ID() 함수를 수신하는 이름에 따라 이 이름의 처리는 형식에 따라 제한되고 종속성을 갖습니다.
4. Name Column With OBJECT_NAME() Function Case¶
OBJECT_NAME() 함수는 아직 지원되지 않으므로 이 함수와 관련된 변환은 지원되지 않습니다.
SQL 서버¶
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';