Skip to main content

Identify Missing PrimaryKeys in tables

-- DEFINE &TableOwnerPattern = &1
-- DEFINE &TableNamePattern = &2

-- COLUMN owner            FORMAT A25  HEADING 'Owner'
-- COLUMN table_name       FORMAT A30  HEADING 'Table'
-- COLUMN constraint_name  FORMAT A30  HEADING 'FK constraint'
-- COLUMN column_list      FORMAT A62  HEADING 'FK columns(s)'   WORD WRAP

WITH constr AS 
(
SELECT c.owner, 
       c.table_name, 
       c.constraint_name, 
       listagg(col.column_name, ', ') within group (ORDER BY col.column_name) column_list_alphabetic,
       listagg(col.column_name, ', ') within group (ORDER BY col.position)    column_list
  FROM dba_constraints c
  JOIN dba_cons_columns col ON ( col.owner = c.owner AND col.constraint_name = c.constraint_name AND col.table_name = c.table_name )
 WHERE c.constraint_type = 'R'
   AND c.owner           like '&TableOwnerPattern'
   AND c.table_name      like '&TableNamePattern' 
 GROUP BY c.owner, c.table_name, c.constraint_name
),
idx AS
(
SELECT table_owner, table_name, 
       listagg(column_name, ', ') within group (ORDER BY column_name)     column_list_alphabetic,
       listagg(column_name, ', ') within group (ORDER BY column_position) column_list
  FROM dba_ind_columns
 WHERE table_owner     like '&TableOwnerPattern'
   AND table_name      like '&TableNamePattern' 
 GROUP BY table_owner, table_name, index_owner, index_name
)
SELECT constr.owner, constr.table_name, constr.constraint_name, constr.column_list
  FROM constr
 WHERE NOT EXISTS ( SELECT 1 FROM idx WHERE constr.owner = idx.table_owner AND constr.table_name = idx.table_name 
                                        AND ( idx.column_list_alphabetic = constr.column_list_alphabetic 
                                              OR instr(idx.column_list,constr.column_list) = 1 )
                  );

Comments

Popular posts from this blog

Behavior Driven Development

Behavior Driven Development (BDD) is a development process that originally associated with Test-Driven Development (TDD).  BDD is written in a readable format in an understandable language for anyone involved in software development.  BDD Features Providing better readability and visibility.  Verifying the software against customer requirements.  Assure the implementation of the system is correct. Derives examples of different expected behaviors of the system. Uses examples as acceptance tests. Focus on customer requirements throughout the development. BDD Practice There are two practices in BDD:-  Specification by Example (SbE). Test-Driven Development (TDD). Specification by example (SbE) uses examples in conversation to illustrate the business rules and the behavior of the software.  This uses to have a better understanding for Business Analyst, Product Owners, Testers and the Developers to reduce the misunderstanding abou...

Scraping HTML Content using Python

To Scrape Data using python we are using BeautifulSoup python Package !pip install beautifulsoup4 As a first step we have to import the packages and html page that we need to scrape. In here I have used some static HTML content which was customized to scrape the data. #imports import requests from bs4 import BeautifulSoup #html HTML Sample Doing Data Science with Python Doing Data Science with Python Author: Eranda Kodagoda This will help to perform various data science activitied using python Modules Title Duration in minutes Getting Started 20 Setting Up Environment 40 Extracting Data 30 Exploring and Processing Data 45 Building Productive Model 45 To View the HTML using beautifulsoup we can use below code-lines and execute on python executor from IPython.core.display import display, HTML display(HTML(html_string)) To Print the HTML using beautifulsoup we can use below code-lines and execute on python executor ps=Be...

Basics of Data Science with Python

About Data Science with Python From this module I will post some interesting posts about Data science and how to gather information and process them using Python and for that I will be using below softwares  Python 3.6 Anaconda Jupyter Notebook PyCharm by JetBrains In the posts I will include fundamentals of Python  programming techniques such as lambdas, reading and manipulating csv files, and the numpy library. And In the posts I will be doing a simple Data Challange which is available on Kaggle and I will provide the URL's to the github repo which I will be posting the whole module once it finished. In Future I will be post some articles related to Applied Data Science with Python: Applied Plotting, Charting & Data Representation in Python, Applied Machine Learning in Python, Applied Text Mining in Python, Applied Social Network Analysis in Python