﻿<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>StrataFrame Forum » StrataFrame Database Deployment Toolkit » Issues  » Keys in SQL Server</title><generator>InstantForum 2017-1 Final</generator><description>StrataFrame Forum</description><link>http://forum.strataframe.net/</link><webMaster>StrataFrame Forum</webMaster><lastBuildDate>Tue, 09 Jun 2026 00:35:19 GMT</lastBuildDate><ttl>20</ttl><item><title>Keys in SQL Server</title><link>http://forum.strataframe.net/FindPost2864.aspx</link><description>In SQL Server, a Unique Key is identified as a Key and a Constraint, both of which have the same name. In the DDT, I don't see an option for Unique Key. How is this implemented in DDT?&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Flavelle</description><pubDate>Wed, 20 Sep 2006 16:28:04 GMT</pubDate><dc:creator>Flavelle Ballem</dc:creator></item><item><title>RE: Keys in SQL Server</title><link>http://forum.strataframe.net/FindPost2938.aspx</link><description>Hello Flavelle, &lt;P&gt;[quote]4. Unique Key - this is the option that I can't figure out how to do. This is a secondary key that must be unique - enforced through a constraint. In addition, an index is created. [/quote]&lt;/P&gt;&lt;P&gt;If you are trying to create a column that is unique in addition to the primary key it should work as described in the DDT help.&amp;nbsp; It is simply a constraint; hence, SQL will throw an exception and you would have to programmatically deal with it in code.&lt;/P&gt;&lt;P&gt;Typically we avoid duplicate records by creating a function within the BO and include the verification in the CheckRulesOnCurrentRow method.&lt;/P&gt;&lt;P&gt;The following code should help.&lt;/P&gt;&lt;P&gt;Steve &lt;/P&gt;&lt;P&gt;---------------------------------------------------------------&lt;/P&gt;&lt;P&gt;For example,&lt;/P&gt;&lt;FONT size=2&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;'-- Verify User Id is unique&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;If&lt;/FONT&gt;&lt;FONT size=2&gt; UserLoginNameDuplicatesExists(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Me&lt;/FONT&gt;&lt;FONT size=2&gt;.us_Username) &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Then&lt;BR&gt;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Me&lt;/FONT&gt;&lt;FONT size=2&gt;.AddBrokenRuleByKey(SFSUsersBOFieldNames.us_Username, &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"SFST_DuplicateEntry"&lt;/FONT&gt;&lt;FONT size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;End&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;If&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT size=2&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Private&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Function&lt;/FONT&gt;&lt;FONT size=2&gt; UserLoginNameDuplicatesExists(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ByVal&lt;/FONT&gt;&lt;FONT size=2&gt; tcUserName &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt;) &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Boolean&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;'-- Establish locals&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; lnPK &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Integer&lt;/FONT&gt;&lt;FONT size=2&gt; = -1&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; loCommand &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;New&lt;/FONT&gt;&lt;FONT size=2&gt; SqlCommand()&lt;/P&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;'-- Exclude current record from comparision&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;If&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Me&lt;/FONT&gt;&lt;FONT size=2&gt;.Count &amp;gt; 0 &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Then&lt;BR&gt;&amp;nbsp; &lt;/FONT&gt;&lt;FONT size=2&gt;lnPK = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Me&lt;/FONT&gt;&lt;FONT size=2&gt;.us_pk&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;End&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;If&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;P&gt;loCommand.CommandText = &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"SELECT COUNT(*) FROM "&lt;/FONT&gt;&lt;FONT size=2&gt; &amp;amp; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Me&lt;/FONT&gt;&lt;FONT size=2&gt;.TableNameAndSchema &amp;amp; &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;" WHERE us_pk != @us_pk and us_UserName = @us_UserName"&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;loCommand.Parameters.Add(&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"@us_pk"&lt;/FONT&gt;&lt;FONT size=2&gt;, SqlDbType.Int)&lt;BR&gt;loCommand.Parameters.Add(&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"@us_UserName"&lt;/FONT&gt;&lt;FONT size=2&gt;, SqlDbType.VarChar)&lt;BR&gt;loCommand.Parameters(&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"@us_pk"&lt;/FONT&gt;&lt;FONT size=2&gt;).Value = lnPK&lt;BR&gt;loCommand.Parameters(&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"@us_UserName"&lt;/FONT&gt;&lt;FONT size=2&gt;).Value = tcUserName&lt;/P&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;'-- Add project key if necessary&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;If&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Me&lt;/FONT&gt;&lt;FONT size=2&gt;.us_sproj_pk &amp;gt; 0 &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Then&lt;BR&gt;&amp;nbsp; &lt;/FONT&gt;&lt;FONT size=2&gt;loCommand.CommandText &amp;amp;= &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;" and us_sproj_pk = @sproj_pk"&lt;BR&gt;&amp;nbsp; &lt;/FONT&gt;&lt;FONT size=2&gt;loCommand.Parameters.Add(&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"@sproj_pk"&lt;/FONT&gt;&lt;FONT size=2&gt;, SqlDbType.Int)&lt;BR&gt;&amp;nbsp; loCommand.Parameters(&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"@sproj_pk"&lt;/FONT&gt;&lt;FONT size=2&gt;).Value = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Me&lt;/FONT&gt;&lt;FONT size=2&gt;.us_sproj_pk&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;End&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;If&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;'-- Return Results&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Return&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;CType&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Me&lt;/FONT&gt;&lt;FONT size=2&gt;.ExecuteScalar(loCommand), &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Integer&lt;/FONT&gt;&lt;FONT size=2&gt;) &amp;gt; 0&lt;/P&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;End&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Function&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;P&gt;Clear as mud?? :w00t:</description><pubDate>Wed, 20 Sep 2006 16:28:04 GMT</pubDate><dc:creator>Steve L. Taylor</dc:creator></item><item><title>RE: Keys in SQL Server</title><link>http://forum.strataframe.net/FindPost2922.aspx</link><description>Trent:&lt;/P&gt;&lt;P&gt;If I edit a table directly in SQL Server and want to add an index or key, there are four options:&lt;/P&gt;&lt;P&gt;1. Primary Key - straight forward, no issues.&lt;/P&gt;&lt;P&gt;2. Unique Index - straight forward, no issues.&lt;/P&gt;&lt;P&gt;3. Non-Unique Index - straight forward, no issues.&lt;/P&gt;&lt;P&gt;4. Unique Key - this is the option that I can't figure out how to do. This is a secondary key that must be unique - enforced through a constraint. In addition, an index is created.</description><pubDate>Tue, 19 Sep 2006 17:16:56 GMT</pubDate><dc:creator>Flavelle Ballem</dc:creator></item><item><title>RE: Keys in SQL Server</title><link>http://forum.strataframe.net/FindPost2870.aspx</link><description>I don't understand the issue.&amp;nbsp; If you create a new index you can define whether it is unique or not.&amp;nbsp; Create a new key and refer to the documentation (DDT CHM File):&lt;/P&gt;&lt;P&gt;Tables -&amp;gt; Indexes -&amp;gt; Index Properties</description><pubDate>Mon, 18 Sep 2006 09:56:41 GMT</pubDate><dc:creator>Trent L. Taylor</dc:creator></item></channel></rss>