﻿<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tüm Primary Key&#8217;leri Listelemek &#8211; SQL Server Eğitimleri</title>
	<atom:link href="https://sqlserveregitimleri.com/etiket/tum-primary-keyleri-listelemek/feed" rel="self" type="application/rss+xml" />
	<link>https://sqlserveregitimleri.com</link>
	<description>SQL Server ile ilgili her şey</description>
	<lastBuildDate>Sat, 02 Oct 2021 11:58:39 +0000</lastBuildDate>
	<language>tr</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.1</generator>
	<item>
		<title>SQL Server&#8217;da Veritabanındaki Tüm Primary Key&#8217;leri Listelemek</title>
		<link>https://sqlserveregitimleri.com/sql-serverda-veritabanindaki-tum-primary-keyleri-listelemek</link>
		
		<dc:creator><![CDATA[Yavuz Selim Kart]]></dc:creator>
		<pubDate>Sat, 02 Oct 2021 11:58:39 +0000</pubDate>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server'da Veritabanındaki Tüm Primary Key'leri Listelemek]]></category>
		<category><![CDATA[Tüm Primary Key'leri Listelemek]]></category>
		<category><![CDATA[Veritabanındaki Tüm Primary Key'leri Listelemek]]></category>
		<guid isPermaLink="false">https://sqlserveregitimleri.com/?p=10984</guid>

					<description><![CDATA[Herkese merhaba, Bu yazıda SQL Server&#8217;da veritabanındaki tüm Primary Key&#8217;lerin nasıl listelenebileceği hakkında bilgi vereceğim. SQL Server&#8217;da bazı durumlarda bu tür sorgular kullanarak tabloları analiz...]]></description>
										<content:encoded><![CDATA[<p>Herkese merhaba,</p>
<p>Bu yazıda SQL Server&#8217;da veritabanındaki tüm Primary Key&#8217;lerin nasıl listelenebileceği hakkında bilgi vereceğim.</p>
<p>SQL Server&#8217;da bazı durumlarda bu tür sorgular kullanarak tabloları analiz edebiliriz ya da başka amaçlar için de kullanabilirsiniz.</p>
<p>Aşağıdaki sorguyu kullanarak bu işlemi sizler de rahatlıkla yapabilirsiniz.</p>
<pre class="line-numbers"><code class="language-sql">WITH column_names
AS (SELECT kc.object_id,
           kc.parent_object_id,
           PrimaryKeyName = QUOTENAME(OBJECT_NAME(kc.object_id)),
           SchemaName = QUOTENAME(OBJECT_SCHEMA_NAME(kc.parent_object_id)),
           TableName = QUOTENAME(OBJECT_NAME(kc.parent_object_id)),
           ColumnName = COL_NAME(ob.object_id, ic.column_id),
           ic.key_ordinal,
           key_number = CAST(kc.parent_object_id AS VARCHAR) + CAST(ic.key_ordinal AS VARCHAR),
           parent_number = CAST(kc.parent_object_id AS VARCHAR) + CAST(ic.key_ordinal - 1 AS VARCHAR),
           descending_key = CASE ic.is_descending_key
                                WHEN 0 THEN
                                    'ASC'
                                ELSE
                                    'DESC'
                            END,
           clustered_desc = CASE INDEXPROPERTY(kc.parent_object_id, OBJECT_NAME(kc.object_id), 'IsClustered')
                                WHEN 1 THEN
                                    'CLUSTERED'
                                ELSE
                                    'NONCLUSTERED'
                            END
    FROM sys.key_constraints kc
        INNER JOIN sys.objects ob
            ON kc.parent_object_id = ob.object_id
        INNER JOIN sys.indexes AS I
            ON kc.unique_index_id = I.index_id
               AND kc.parent_object_id = I.object_id
        INNER JOIN sys.index_columns ic
            ON I.object_id = ic.object_id
               AND I.index_id = ic.index_id
    WHERE kc.type = 'PK'
          AND ob.type = 'U'
          AND ob.name NOT IN ( 'dtproperties', 'sysdiagrams' )),
     max_key_ordinal
AS (SELECT object_id,
           parent_object_id,
           max_ordinal_value = MAX(key_ordinal)
    FROM column_names
    GROUP BY object_id,
             parent_object_id),
     primary_key_columns (object_id, parent_object_id, PrimaryKeyName, ColumnNames, SchemaName, TableName, key_ordinal,
                          key_number, clustered_desc
                         )
AS (SELECT pt.object_id,
           pt.parent_object_id,
           pt.PrimaryKeyName,
           ColumnNames = CAST(pt.ColumnName + ' ' + pt.descending_key AS VARCHAR(MAX)),
           pt.SchemaName,
           pt.TableName,
           pt.key_ordinal,
           pt.key_number,
           pt.clustered_desc
    FROM column_names pt
        INNER JOIN column_names ch
            ON pt.key_number = ch.key_number
    WHERE pt.key_ordinal = 1 -- parent record
    UNION ALL
    SELECT pt.object_id,
           pt.parent_object_id,
           pt.PrimaryKeyName,
           CAST(ch.ColumnNames + ', ' + pt.ColumnName + ' ' + pt.descending_key AS VARCHAR(MAX)),
           pt.SchemaName,
           pt.TableName,
           pt.key_ordinal,
           pt.key_number,
           pt.clustered_desc
    FROM column_names pt
        INNER JOIN primary_key_columns ch
            ON pt.parent_number = ch.key_number
    WHERE pt.key_ordinal != 1)
SELECT pk.PrimaryKeyName,
       pk.SchemaName,
       pk.TableName,
       'create_primary_key' = 'ALTER TABLE ' + pk.SchemaName + '.' + pk.TableName + ' ADD CONSTRAINT '
                              + pk.PrimaryKeyName + ' PRIMARY KEY ' + clustered_desc + ' (' + pk.ColumnNames + ') ',
       'drop_primary_key' = 'ALTER TABLE ' + pk.SchemaName + '.' + pk.TableName + ' DROP CONSTRAINT '
                            + pk.PrimaryKeyName
FROM primary_key_columns pk
    INNER JOIN max_key_ordinal mv
        ON mv.object_id = pk.object_id
           AND mv.parent_object_id = pk.parent_object_id
           AND mv.max_ordinal_value = pk.key_ordinal;</code></pre>
<p>Kodu çalıştırdığınızda aşağıdaki sonucu göreceksiniz.</p>
<p><img fetchpriority="high" decoding="async" class="alignnone wp-image-10986 size-full" src="https://sqlserveregitimleri.com/wp-content/uploads/2021/10/sql-serverda-veritabanindaki-tum-primary-keyleri-listelemek-1.jpg" alt="SQL Server'da Veritabanındaki Tüm Primary Key'leri Listelemek" width="700" height="468" srcset="https://sqlserveregitimleri.com/wp-content/uploads/2021/10/sql-serverda-veritabanindaki-tum-primary-keyleri-listelemek-1.jpg 700w, https://sqlserveregitimleri.com/wp-content/uploads/2021/10/sql-serverda-veritabanindaki-tum-primary-keyleri-listelemek-1-315x211.jpg 315w, https://sqlserveregitimleri.com/wp-content/uploads/2021/10/sql-serverda-veritabanindaki-tum-primary-keyleri-listelemek-1-449x300.jpg 449w, https://sqlserveregitimleri.com/wp-content/uploads/2021/10/sql-serverda-veritabanindaki-tum-primary-keyleri-listelemek-1-202x135.jpg 202w" sizes="(max-width: 700px) 100vw, 700px" /></p>
<p>Görüldüğü üzere tüm Primary Key&#8217;ler listelenmiş oldu.</p>
<p>Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.</p>
<div class='epvc-post-count'><span class='epvc-eye'></span>  <span class="epvc-count"> 315</span><span class='epvc-label'> Kez Okundu</span></div>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
