pgsql/schema_create_table_statement.sql
authorAlan Knowles <alan@roojs.com>
Tue, 7 Oct 2014 12:01:25 +0000 (20:01 +0800)
committerAlan Knowles <alan@roojs.com>
Tue, 7 Oct 2014 12:01:25 +0000 (20:01 +0800)
pgsql/schema_create_table_statement.sql

index eaa7dce..f54c65f 100644 (file)
@@ -93,8 +93,27 @@ BEGIN
     END LOOP;
 
     -- constraints...
-    
-
+     FOR column_record IN 
+        
+        SELECT
+            tc.constraint_name, tc.table_name, kcu.column_name, 
+            ccu.table_name AS foreign_table_name,
+            ccu.column_name AS foreign_column_name        
+        FROM 
+            information_schema.table_constraints AS tc 
+            JOIN information_schema.key_column_usage AS kcu
+              ON tc.constraint_name = kcu.constraint_name
+            JOIN information_schema.constraint_column_usage AS ccu
+              ON ccu.constraint_name = tc.constraint_name
+        WHERE constraint_type = 'FOREIGN KEY' AND tc.table_name=p_table_name;
+        
+    LOOP
+         
+            v_table_ddl:= v_table_ddl||chr(10)||
+                      'ALTER TABLE ' ||v_schema||'.'||p_table_name||' ADD CONSTRAINT ' || column_record.constraint_name ||
+                          ' FOREIGN KEY (' || column_record.column_name || ') REFERENCES ' || foreign_table_name || '(' || foreign_column_name || ') MATCH SIMPLE';
+         
+    END LOOP;