<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=40510&amp;view=findpost&amp;p=262983</guid>
        <pubDate>Sat, 13 Dec 2003 20:51:24 +0000</pubDate>
        <title>Сгенерировать уникальный ID</title>
        <link>https://forum.sources.ru/index.php?showtopic=40510&amp;view=findpost&amp;p=262983</link>
        <description><![CDATA[Visitor:  ???<br><br>Ну вот пример хранимой процедуры, которая делает и то и другое и третье:<br><br><b>MS SQL</b><!--c1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b></b> </td></tr><tr><td id='CODE'><!--ec1-->CREATE PROCEDURE sp_AddAndFetchNewRecord<br>&nbsp; &nbsp; @ServerCode int,<br>&nbsp; &nbsp; @Name varchar&#40;50&#41;,<br>&nbsp; &nbsp; @Description varchar&#40;200&#41;<br>AS<br><br>Declare<br>&nbsp; &nbsp; @NewID int<br><br>BEGIN TRANSACTION<br><br>select<br>&nbsp; &nbsp; @NewID = isnull&#40;max&#40;ID&#41;, @ServerCode*100000&#41;+1<br>from<br>&nbsp; &nbsp; tb_Records<br>where<br>&nbsp; &nbsp; &#91;ID&#93; between @ServerCode*100000 and &#40;@ServerCode+1&#41;*100000 - 1<br><br>insert into<br>&nbsp; &nbsp; tb_Records&#40;&#91;ID&#93;, &#91;Name&#93;, &#91;Description&#93;&#41;<br>values<br>&nbsp; &nbsp; &#40;@NewID, @Name, @Description&#41;<br><br>COMMIT TRANSACTION<br><br>select<br>&nbsp; &nbsp; *<br>from<br>&nbsp; &nbsp; tb_Records<br>where<br>&nbsp; &nbsp; &#91;ID&#93; = @NewID<!--c2--></td></tr></table><div class='postcolor'><!--ec2--> ]]></description>
        <author>Visitor</author>
        <category>Delphi: Базы данных</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=40510&amp;view=findpost&amp;p=262975</guid>
        <pubDate>Sat, 13 Dec 2003 20:31:05 +0000</pubDate>
        <title>Сгенерировать уникальный ID</title>
        <link>https://forum.sources.ru/index.php?showtopic=40510&amp;view=findpost&amp;p=262975</link>
        <description><![CDATA[albom:  И сразу еще вопрос.<br>Вот сгенерировали мы ID, создали новую запись. а как наибыстрейшим способом получить из моей программы этот ID? ]]></description>
        <author>albom</author>
        <category>Delphi: Базы данных</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=40510&amp;view=findpost&amp;p=262665</guid>
        <pubDate>Sat, 13 Dec 2003 12:15:32 +0000</pubDate>
        <title>Сгенерировать уникальный ID</title>
        <link>https://forum.sources.ru/index.php?showtopic=40510&amp;view=findpost&amp;p=262665</link>
        <description><![CDATA[Visitor:  Обязательно случится. Когда нибудь. Переполнение у любого типа случиться может, даже у 128-битного GUID <!--emo&:)--><img src='http://forum.sources.ru/html/emoticons/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif' /><!--endemo--><br><br>Надо просто диапазон выбирать с запасом порядка на два... ]]></description>
        <author>Visitor</author>
        <category>Delphi: Базы данных</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=40510&amp;view=findpost&amp;p=262664</guid>
        <pubDate>Sat, 13 Dec 2003 12:13:21 +0000</pubDate>
        <title>Сгенерировать уникальный ID</title>
        <link>https://forum.sources.ru/index.php?showtopic=40510&amp;view=findpost&amp;p=262664</link>
        <description><![CDATA[albom:  Спасибо, вроде все понятно.<br>Только интересно стало, не случится ли когда-нибудь в этой строчке <b>@NewID=isnull(max(ID), 0)+1</b> ошибка переполнения? ]]></description>
        <author>albom</author>
        <category>Delphi: Базы данных</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=40510&amp;view=findpost&amp;p=262655</guid>
        <pubDate>Sat, 13 Dec 2003 11:56:35 +0000</pubDate>
        <title>Сгенерировать уникальный ID</title>
        <link>https://forum.sources.ru/index.php?showtopic=40510&amp;view=findpost&amp;p=262655</link>
        <description><![CDATA[Visitor:  Если приходится генерировать его врукопашную (сама база НЕ умеет ето делать, например, с помощью AUTOINCREMENT-поля) может подойти что-то вроде:<br><br><b>MS SQL:</b><!--c1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b></b> </td></tr><tr><td id='CODE'><!--ec1-->Declare<br> &nbsp; &nbsp;@NewID int<br>select @NewID=isnull&#40;max&#40;ID&#41;, 0&#41;+1 from mytable<br><br>insert into mytable&#40;ID, ....&#41; values &#40;@NewID, ....&#41;<!--c2--></td></tr></table><div class='postcolor'><!--ec2--><br><br>При етом желательно SET TRANSACTION ISOLATION LEVEL SERIALISABLE<br><br>И, если eсли уж генерить етот ID руками, лучше сразу предусмотреть возможность создания уникальных ID в нескольких экземплярах базы (мало ли, понадобится распределенную ИС создавать), т.е., чтоб ID состоял из двух частей -- кода экземпляра БД и, например, сквозного номера в пределах етого екземпляра, вроде етого:<br><br><!--c1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b></b> </td></tr><tr><td id='CODE'><!--ec1-->Declare<br> &nbsp; &nbsp;@NewID int<br>select @NewID=isnull&#40;max&#40;ID&#41;, @Code*1000000&#41;+1 from mytable where ID between @Code* 1000000 and @Code* 1000000 + 999999<br><br>insert into mytable&#40;ID, ....&#41; values &#40;@NewID, ....&#41;<!--c2--></td></tr></table><div class='postcolor'><!--ec2--><br> ]]></description>
        <author>Visitor</author>
        <category>Delphi: Базы данных</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=40510&amp;view=findpost&amp;p=262654</guid>
        <pubDate>Sat, 13 Dec 2003 11:56:23 +0000</pubDate>
        <title>Сгенерировать уникальный ID</title>
        <link>https://forum.sources.ru/index.php?showtopic=40510&amp;view=findpost&amp;p=262654</link>
        <description><![CDATA[Song:  CreateGuid ? ]]></description>
        <author>Song</author>
        <category>Delphi: Базы данных</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=40510&amp;view=findpost&amp;p=262651</guid>
        <pubDate>Sat, 13 Dec 2003 11:47:41 +0000</pubDate>
        <title>Сгенерировать уникальный ID</title>
        <link>https://forum.sources.ru/index.php?showtopic=40510&amp;view=findpost&amp;p=262651</link>
        <description><![CDATA[albom:  Только начал разбираться как работать с БД, так сразу наткнулся на вопрос, который поставил меня в тупик.<br>В общем есть несколько таблиц, причем в каждой таблице есть поле &quot;ID&quot; (число). Нужно создать новую запись в одной из таблиц, и полю &quot;ID&quot; присвоить уникальное значение. <br><br>Вопрос, как сгенерировать такое уникальное значение?<br><br>Заранее спасибо за ответ.<br> ]]></description>
        <author>albom</author>
        <category>Delphi: Базы данных</category>
      </item>
	
      </channel>
      </rss>
	