I'm trying to reverse engineer a database to get foreign key infos. I have a SQL query which works fine in pgAdmin:
Code: Select all
SELECT conrelid::regclass as "table",
a.attname as columns,
confrelid::regclass as "foreign table",
af.attname as "foreign columns",
conrelid
FROM pg_attribute AS af,
pg_attribute AS a,
( SELECT conrelid,
confrelid,
conkey[i] AS conkey,
confkey[i] as confkey
FROM ( SELECT conrelid,
confrelid,
conkey,
confkey,
generate_series(1, array_upper(conkey, 1)) AS i
FROM pg_constraint
WHERE contype = 'f'
) AS ss
) AS ss2
WHERE af.attnum = confkey
AND af.attrelid = confrelid
AND a.attnum = conkey
AND a.attrelid = conrelid
AND conrelid::regclass = 'table_name'::regclass
AND a.attname = 'field_name';
Code: Select all
myQuery := TUniQuery.Create(nil);
myQuery.Connection := DatabaseConnection;
myQuery.SQL.Text := SQLQuery;
DatabaseConnection.StartTransaction;
myQuery.Execute;
[...]
myQuery.Free;
DatabaseConnection.Commit;