Welcome Guest Search | Active Topics | Log In | Register

PHPBB Conversion Script Options · View
suprphrk
#1 Posted : Thursday, February 21, 2008 6:16:36 AM

Rank: YAF Forumling


Joined: 2/20/2008
Posts: 6
Location: St. Louis
Here's the script (in order) that I did to move everything from phpbb over to YAF. I don't know what version of phpbb I was using, because I turned it off a long time ago. I was getting spammed too much. The YAF version I did this under was 1.9.1.6. I use SQL Server 2005. I have an issue after it converts though: some of the topics aren't showing up on the page even though they're in the database. The thread for that issue can be seen here.

What I did first was to follow the install instructions in order to install YAF. In my case, I also needed it to work inside my existing .NET application, so I also followed those instructions. Then I ran this script:

First, you have to remove all of the constraints (I just removed all keys and indexes) that YAF sets up. I didn't check to see if they existed first, because I had just finished the install:
Code:
ALTER TABLE yaf_AccessMask DROP CONSTRAINT FK_yaf_AccessMask_yaf_Board
ALTER TABLE yaf_Active DROP CONSTRAINT FK_yaf_Active_yaf_Board
ALTER TABLE yaf_Active DROP CONSTRAINT FK_yaf_Active_yaf_Forum
ALTER TABLE yaf_Active DROP CONSTRAINT FK_yaf_Active_yaf_Topic
ALTER TABLE yaf_Active DROP CONSTRAINT FK_yaf_Active_yaf_User
ALTER TABLE yaf_Active DROP CONSTRAINT PK_yaf_Active
ALTER TABLE yaf_Attachment DROP CONSTRAINT FK_yaf_Attachment_yaf_Message
ALTER TABLE yaf_Attachment DROP CONSTRAINT PK_yaf_Attachment
ALTER TABLE yaf_BannedIP DROP CONSTRAINT FK_yaf_BannedIP_yaf_Board
ALTER TABLE yaf_BannedIP DROP CONSTRAINT IX_yaf_BannedIP
ALTER TABLE yaf_BannedIP DROP CONSTRAINT PK_yaf_BannedIP
ALTER TABLE yaf_Category DROP CONSTRAINT FK_yaf_Category_yaf_Board
ALTER TABLE yaf_Category DROP CONSTRAINT IX_yaf_Category
ALTER TABLE yaf_CheckEmail DROP CONSTRAINT FK_yaf_CheckEmail_yaf_User
ALTER TABLE yaf_CheckEmail DROP CONSTRAINT IX_yaf_CheckEmail
ALTER TABLE yaf_CheckEmail DROP CONSTRAINT PK_yaf_CheckEmail
ALTER TABLE yaf_Choice DROP CONSTRAINT FK_yaf_Choice_yaf_Poll
ALTER TABLE yaf_Choice DROP CONSTRAINT PK_yaf_Choice
ALTER TABLE yaf_EventLog DROP CONSTRAINT FK_yaf_EventLog_yaf_User
ALTER TABLE yaf_EventLog DROP CONSTRAINT PK_EventLog
ALTER TABLE yaf_Forum DROP CONSTRAINT FK_yaf_Forum_yaf_Category
ALTER TABLE yaf_Category DROP CONSTRAINT PK_yaf_Category
ALTER TABLE yaf_Forum DROP CONSTRAINT FK_yaf_Forum_yaf_Forum
ALTER TABLE yaf_Forum DROP CONSTRAINT FK_yaf_Forum_yaf_Message
ALTER TABLE yaf_Forum DROP CONSTRAINT FK_yaf_Forum_yaf_Topic
ALTER TABLE yaf_Forum DROP CONSTRAINT FK_yaf_Forum_yaf_User
ALTER TABLE yaf_Forum DROP CONSTRAINT IX_yaf_Forum
ALTER TABLE yaf_ForumAccess DROP CONSTRAINT FK_yaf_ForumAccess_yaf_AccessMask
ALTER TABLE yaf_ForumAccess DROP CONSTRAINT FK_yaf_ForumAccess_yaf_Forum
ALTER TABLE yaf_ForumAccess DROP CONSTRAINT FK_yaf_ForumAccess_yaf_Group
ALTER TABLE yaf_ForumAccess DROP CONSTRAINT PK_yaf_ForumAccess
ALTER TABLE yaf_Group DROP CONSTRAINT FK_yaf_Group_yaf_Board
ALTER TABLE yaf_Group DROP CONSTRAINT IX_yaf_Group
ALTER TABLE yaf_Mail DROP CONSTRAINT PK_yaf_Mail
ALTER TABLE yaf_Message DROP CONSTRAINT FK_yaf_Message_yaf_Message
ALTER TABLE yaf_Message DROP CONSTRAINT FK_yaf_Message_yaf_Topic
ALTER TABLE yaf_Message DROP CONSTRAINT FK_yaf_Message_yaf_User
ALTER TABLE yaf_NntpForum DROP CONSTRAINT FK_yaf_NntpForum_yaf_NntpServer
ALTER TABLE yaf_NntpServer DROP CONSTRAINT FK_yaf_NntpServer_yaf_Board
ALTER TABLE yaf_NntpServer DROP CONSTRAINT PK_yaf_NntpServer
ALTER TABLE yaf_NntpTopic DROP CONSTRAINT FK_yaf_NntpTopic_yaf_NntpForum
ALTER TABLE yaf_NntpForum DROP CONSTRAINT PK_yaf_NntpForum
ALTER TABLE yaf_NntpForum DROP CONSTRAINT FK_yaf_NntpForum_yaf_Forum
ALTER TABLE yaf_NntpTopic DROP CONSTRAINT FK_yaf_NntpTopic_yaf_Topic
ALTER TABLE yaf_NntpTopic DROP CONSTRAINT PK_yaf_NntpTopic
ALTER TABLE yaf_PMessage DROP CONSTRAINT FK_yaf_PMessage_yaf_User1
ALTER TABLE yaf_PollVote DROP CONSTRAINT FK_yaf_PollVote_yaf_Poll
ALTER TABLE yaf_PollVote DROP CONSTRAINT PK_yaf_PollVote
ALTER TABLE yaf_Rank DROP CONSTRAINT FK_yaf_Rank_yaf_Board
ALTER TABLE yaf_Rank DROP CONSTRAINT IX_yaf_Rank
ALTER TABLE yaf_Registry DROP CONSTRAINT FK_yaf_Registry_yaf_Board
ALTER TABLE yaf_Registry DROP CONSTRAINT PK_Registry
ALTER TABLE yaf_Replace_Words DROP CONSTRAINT PK_Replace_Words
ALTER TABLE yaf_Smiley DROP CONSTRAINT FK_yaf_Smiley_yaf_Board
ALTER TABLE yaf_Smiley DROP CONSTRAINT IX_yaf_Smiley
ALTER TABLE yaf_Smiley DROP CONSTRAINT PK_yaf_Smiley
ALTER TABLE yaf_Topic DROP CONSTRAINT FK_yaf_Topic_yaf_Forum
ALTER TABLE yaf_Topic DROP CONSTRAINT FK_yaf_Topic_yaf_Message
ALTER TABLE yaf_Message DROP CONSTRAINT PK_yaf_Message
ALTER TABLE yaf_Topic DROP CONSTRAINT FK_yaf_Topic_yaf_Poll
ALTER TABLE yaf_Poll DROP CONSTRAINT PK_yaf_Poll
ALTER TABLE yaf_Topic DROP CONSTRAINT FK_yaf_Topic_yaf_Topic
ALTER TABLE yaf_Topic DROP CONSTRAINT FK_yaf_Topic_yaf_User
ALTER TABLE yaf_Topic DROP CONSTRAINT FK_yaf_Topic_yaf_User2
ALTER TABLE yaf_User DROP CONSTRAINT FK_yaf_User_yaf_Board
ALTER TABLE yaf_Board DROP CONSTRAINT PK_yaf_Board
ALTER TABLE yaf_User DROP CONSTRAINT FK_yaf_User_yaf_Rank
ALTER TABLE yaf_User DROP CONSTRAINT IX_yaf_User
ALTER TABLE yaf_Rank DROP CONSTRAINT PK_yaf_Rank
ALTER TABLE yaf_UserForum DROP CONSTRAINT FK_yaf_UserForum_yaf_AccessMask
ALTER TABLE yaf_AccessMask DROP CONSTRAINT PK_yaf_AccessMask
ALTER TABLE yaf_UserForum DROP CONSTRAINT FK_yaf_UserForum_yaf_Forum
ALTER TABLE yaf_UserForum DROP CONSTRAINT FK_yaf_UserForum_yaf_User
ALTER TABLE yaf_UserForum DROP CONSTRAINT PK_yaf_UserForum
ALTER TABLE yaf_UserGroup DROP CONSTRAINT FK_yaf_UserGroup_yaf_Group
ALTER TABLE yaf_Group DROP CONSTRAINT PK_yaf_Group
ALTER TABLE yaf_UserGroup DROP CONSTRAINT FK_yaf_UserGroup_yaf_User
ALTER TABLE yaf_UserGroup DROP CONSTRAINT PK_yaf_UserGroup
ALTER TABLE yaf_UserPMessage DROP CONSTRAINT FK_yaf_UserPMessage_yaf_PMessage
ALTER TABLE yaf_PMessage DROP CONSTRAINT PK_yaf_PMessage
ALTER TABLE yaf_UserPMessage DROP CONSTRAINT FK_yaf_UserPMessage_yaf_User
ALTER TABLE yaf_UserPMessage DROP CONSTRAINT PK_yaf_UserPMessage
ALTER TABLE yaf_WatchForum DROP CONSTRAINT FK_yaf_WatchForum_yaf_Forum
ALTER TABLE yaf_Forum DROP CONSTRAINT PK_yaf_Forum
ALTER TABLE yaf_WatchForum DROP CONSTRAINT FK_yaf_WatchForum_yaf_User
ALTER TABLE yaf_WatchForum DROP CONSTRAINT IX_yaf_WatchForum
ALTER TABLE yaf_WatchForum DROP CONSTRAINT PK_yaf_WatchForum
ALTER TABLE yaf_WatchTopic DROP CONSTRAINT FK_yaf_WatchTopic_yaf_Topic
ALTER TABLE yaf_Topic DROP CONSTRAINT PK_yaf_Topic
ALTER TABLE yaf_WatchTopic DROP CONSTRAINT FK_yaf_WatchTopic_yaf_User
ALTER TABLE yaf_User DROP CONSTRAINT PK_yaf_yaf_User
ALTER TABLE yaf_WatchTopic DROP CONSTRAINT IX_yaf_WatchTopic
ALTER TABLE yaf_WatchTopic DROP CONSTRAINT PK_yaf_WatchTopic


Then, you have to run the script that's already out there (I don't know who wrote it, but perfect job in my case!

Code:
/*
    Set your current database context to the YAF database
    If the source database does not equal phpbb,
        find and replace with the appropriate database name (dbo.[phpbb-db-name].).


    notes: handle bb code? flags? Votes: need a yaf_ChoiceUser table, cookie in YAF
*/


-- ugly, but it converts the IP address to proper format
-- functions found on internet
create function hexchar(
@b varchar(10)
) returns int
as begin
declare @n bigint
set @n = 0
declare @digits char(16)
set @digits = '0123456789ABCDEF'
set @b = substring(@b,3,8)
while len(@b) > 0 begin
set @n = 16*@n + charindex(substring(@b,1,1),@digits)-1
set @b = substring(@b,2,8)
end
return
case when @n >= 0X80000000
then @n - 0x0100000000
else @n end
end
go

create function convertHexIP(@h varchar(9)) returns varchar(15)
as begin
    declare @r varchar(15)
    select @r =cast(dbo.hexchar('0x'+substring(@h,1,2)) as varchar) + '.'+
        cast(dbo.hexchar('0x'+substring(@h,3,2)) as varchar) + '.'+
        cast(dbo.hexchar('0x'+substring(@h,5,2)) as varchar) + '.'+
        cast(dbo.hexchar('0x'+substring(@h,7,2)) as varchar)

    return @r
end
go


----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------

--migrate the users

set identity_insert yaf_user on

INSERT INTO [dbo].[yaf_User]
    ([UserID], [BoardID], [Name], [Password],
     [Email], [Joined], [LastVisit], [IP],
     [NumPosts], [Location], [HomePage], [TimeZone],
     [Avatar], [Signature], [AvatarImage], [RankID],
     [Suspended], [LanguageFile], [ThemeFile], [MSN],
     [YIM], [AIM], [ICQ], [RealName],
     [Occupation], [Interests], [Gender], [Weblog], [Flags])
    SELECT user_id, 1, username, user_password,
        user_email, dateadd(ss, user_regdate, 'dec 31 1969 18:00:00'), dateadd(ss, user_lastvisit, 'dec 31 1969 18:00:00'), null,
        user_posts, left(user_from,50), left(user_website,50), user_timezone * 60,
        user_avatar, user_sig, null, 4, -- rank, 4 = member
        null, null, null, left(user_msnm,50),
        left(user_yim,30), left(user_aim,30), null, null,
        user_occ, left(user_interests,100), 1, null, 4 -- 4?
    FROM dbo.phpbb_users
    where user_id > 2 -- change when pushed ?

-- TODO: flag?

set identity_insert yaf_user off
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------


set identity_insert yaf_category on
INSERT INTO [dbo].[yaf_Category]([CategoryID], [BoardID], [Name], [SortOrder])
    select cat_id, 1, cat_title, cat_order
    from dbo.phpbb_categories
set identity_insert yaf_category off

----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------

update yaf_topic
set lastMessageID = null

delete from yaf_message
delete from yaf_topic
delete from yaf_forumaccess
delete from yaf_forum


set identity_insert yaf_Forum on

INSERT INTO [dbo].[yaf_Forum]
    ([ForumID], [CategoryID], [ParentID], [Name],
     [Description], [SortOrder], [LastPosted], [LastTopicID],
     [LastMessageID], [LastUserID], [LastUserName], [NumTopics],
     [NumPosts], [RemoteURL], [Flags])
    SELECT forum_id, cat_id, null, left(forum_name,50),
        forum_desc, forum_order, null, null,
        null, null, null, forum_topics,
        forum_posts, null, 4 -- 4?
    FROM dbo.phpbb_forums

--TODO: figure out what flag column (4) is for

set identity_insert yaf_forum off

----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------

set identity_insert yaf_topic on

INSERT INTO [dbo].[yaf_Topic]
    ([TopicID], [ForumID], [UserID], [UserName],
     [Posted], [Topic], [Views], [Priority],
     [PollID], [TopicMovedID], [LastPosted], [LastMessageID],
     [LastUserID], [LastUserName], [NumPosts], [Flags])
    SELECT topic_id, forum_id, topic_poster, null,
        dateadd(ss, topic_time, 'dec 31 1969 18:00:00'), topic_title, topic_views, 0,
        null, null, null, null,
        null, null, topic_replies, 0
    FROM dbo.phpbb_topics

-- TODO: flags?

set identity_insert yaf_topic off


----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------


set identity_insert yaf_message on

INSERT INTO [dbo].[yaf_Message]
    ([MessageID], [TopicID], [ReplyTo], [Position],
     [Indent], [UserID], [UserName], [Posted],
     [Message], [IP], [Edited], [Flags])
    SELECT a.post_Id, a.topic_id, null, 0,
        0, case when a.poster_Id = -1 then 1 else a.poster_id end, null, dateadd(ss, a.post_time, 'dec 31 1969 18:00:00'),
        b.post_text, dbo.convertHexIP(a.poster_ip), dateadd(ss, a.post_edit_time, 'dec 31 1969 18:00:00'), 22 -- ?
    FROM dbo.phpbb_posts a
        INNER JOIN dbo.phpbb_posts_text b
            ON a.post_Id = b.post_Id

-- TODO: flags?
-- did not migrate subject, no column found

set identity_insert yaf_message off


----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------



INSERT INTO [dbo].[yaf_WatchTopic]([TopicID], [UserID], [Created], [LastMail])
    SELECT topic_id, user_id, getdate(), null
    FROM dbo.phpbb_topics_watch
    where notify_status = 1 --?


-- TODO: confirm notify_status value

----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------


set identity_insert yaf_PMessage on

INSERT INTO [dbo].[yaf_PMessage]([PMessageID], [FromUserID], [Created], [Subject], [Body], [Flags])
    SELECT privmsgs_id, privmsgs_from_userid, dateadd(ss, a.privmsgs_date, 'dec 31 1969 18:00:00'), privmsgs_subject, privmsgs_text, 2147483646 --?flag
    FROM dbo.phpbb_privmsgs a
        INNER JOIN dbo.phpbb_privmsgs_text b
            ON a.privmsgs_id = b.privmsgs_text_id
-- TODO: flags?

set identity_insert yaf_PMessage off

----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------

-- setting all as read, no flag found in phpbb
insert into yaf_userpmessage (userid, pmessageid, isread)
    SELECT privmsgs_to_userid, privmsgs_id, 1
    FROM dbo.phpbb_privmsgs

----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------


INSERT INTO [dbo].[yaf_BannedIP]([BoardID], [Mask], [Since])
    SELECT 1, dbo.convertHexIP(ban_ip), getdate()
    FROM dbo.phpbb_banlist

----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------

-- TODO: Polls and votes!

-- TODO: DNN USERS?


----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------


-- update stats in yaf_topic table
update c
set c.lastposted = a.posted,
    c.lastmessageid = a.messageid,
    c.lastuserid = a.userid
from yaf_topic c, yaf_message a, (select topicid, max(posted) as 'dt' from yaf_message a group by topicid) b
where a.topicid = b.topicid and a.posted = b.dt
  and a.topicid = c.topicid and b.topicid = c.topicid


-- update stats in yaf_forum
update c
set    c.lastposted = a.lastposted,
    c.lastmessageid = a.lastmessageid,
    c.lastuserid = a.lastuserid,
    c.lasttopicid = a.topicid
from yaf_forum c, yaf_topic a, (select forumid, max(lastposted) as 'dt' from yaf_topic a group by forumid) b
where a.forumid = b.forumid and a.lastposted = b.dt
  and a.forumid = c.forumid and b.forumid = c.forumid

----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------


------ permissions
-- admins,members
insert into yaf_forumaccess (GroupID, ForumID, AccessMaskID)
    select groupid, forumid, GroupID
    from yaf_group, yaf_forum
    where groupid in (1,3)
-- guest
insert into yaf_forumaccess (GroupID, ForumID, AccessMaskID)
    select groupid, forumid, 4
    from yaf_group, yaf_forum
    where groupid = 2

----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------


drop function hexchar
drop function convertHexIp

----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------

-- update the position column
DECLARE @messageID int
DECLARE @topicID int
DECLARE @position int

DECLARE CRS CURSOR LOCAL FOR
    select MessageID, TopicID
    from yaf_message

OPEN CRS

FETCH NEXT FROM CRS INTO @messageID, @topicID


WHILE @@FETCH_STATUS = 0 BEGIN

    SELECT @position = count(*)+1
    FROM yaf_message
    WHERE TopicID = @topicID
      AND MessageID < @messageID

    UPDATE yaf_message
    SET [position] = @position
    where messageid = @messageID


    FETCH NEXT FROM CRS INTO @messageID, @topicID
END

CLOSE CRS
DEALLOCATE CRS


Then, all you have to do is set up all of the indexes, keys, constraints again, which is in the .sql file included in the YAF install:

Code:

/*
** Drop old Foreign keys
*/

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_Active_Forum'
           AND parent_obj = Object_id('yaf_Active')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Active
DROP CONSTRAINT FK_Active_Forum
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_Active_Topic'
           AND parent_obj = Object_id('yaf_Active')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Active
DROP CONSTRAINT FK_Active_Topic
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_Active_User'
           AND parent_obj = Object_id('yaf_Active')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Active
DROP CONSTRAINT FK_Active_User
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_CheckEmail_User'
           AND parent_obj = Object_id('yaf_CheckEmail')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_CheckEmail
DROP CONSTRAINT FK_CheckEmail_User
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_Choice_Poll'
           AND parent_obj = Object_id('yaf_Choice')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Choice
DROP CONSTRAINT FK_Choice_Poll
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_Forum_Category'
           AND parent_obj = Object_id('yaf_Forum')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Forum
DROP CONSTRAINT FK_Forum_Category
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_Forum_Message'
           AND parent_obj = Object_id('yaf_Forum')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Forum
DROP CONSTRAINT FK_Forum_Message
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_Forum_Topic'
           AND parent_obj = Object_id('yaf_Forum')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Forum
DROP CONSTRAINT FK_Forum_Topic
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_Forum_User'
           AND parent_obj = Object_id('yaf_Forum')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Forum
DROP CONSTRAINT FK_Forum_User
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_ForumAccess_Forum'
           AND parent_obj = Object_id('yaf_ForumAccess')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_ForumAccess
DROP CONSTRAINT FK_ForumAccess_Forum
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_ForumAccess_Group'
           AND parent_obj = Object_id('yaf_ForumAccess')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_ForumAccess
DROP CONSTRAINT FK_ForumAccess_Group
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_Message_Topic'
           AND parent_obj = Object_id('yaf_Message')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Message
DROP CONSTRAINT FK_Message_Topic
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_Message_User'
           AND parent_obj = Object_id('yaf_Message')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Message
DROP CONSTRAINT FK_Message_User
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_PMessage_User1'
           AND parent_obj = Object_id('yaf_PMessage')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_PMessage
DROP CONSTRAINT FK_PMessage_User1
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_Topic_Forum'
           AND parent_obj = Object_id('yaf_Topic')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Topic
DROP CONSTRAINT FK_Topic_Forum
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_Topic_Message'
           AND parent_obj = Object_id('yaf_Topic')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Topic
DROP CONSTRAINT FK_Topic_Message
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_Topic_Poll'
           AND parent_obj = Object_id('yaf_Topic')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Topic
DROP CONSTRAINT FK_Topic_Poll
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_Topic_Topic'
           AND parent_obj = Object_id('yaf_Topic')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Topic
DROP CONSTRAINT FK_Topic_Topic
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_Topic_User'
           AND parent_obj = Object_id('yaf_Topic')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Topic
DROP CONSTRAINT FK_Topic_User
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_Topic_User2'
           AND parent_obj = Object_id('yaf_Topic')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Topic
DROP CONSTRAINT FK_Topic_User2
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_WatchForum_Forum'
           AND parent_obj = Object_id('yaf_WatchForum')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_WatchForum
DROP CONSTRAINT FK_WatchForum_Forum
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_WatchForum_User'
           AND parent_obj = Object_id('yaf_WatchForum')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_WatchForum
DROP CONSTRAINT FK_WatchForum_User
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_WatchTopic_Topic'
           AND parent_obj = Object_id('yaf_WatchTopic')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_WatchTopic
DROP CONSTRAINT FK_WatchTopic_Topic
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_WatchTopic_User'
           AND parent_obj = Object_id('yaf_WatchTopic')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_WatchTopic
DROP CONSTRAINT FK_WatchTopic_User
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_Active_Forum'
           AND parent_obj = Object_id('yaf_Active')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Attachment
DROP CONSTRAINT FK_Attachment_Message
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_UserGroup_User'
           AND parent_obj = Object_id('yaf_UserGroup')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_UserGroup
DROP CONSTRAINT FK_UserGroup_User
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_UserGroup_Group'
           AND parent_obj = Object_id('yaf_UserGroup')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_UserGroup
DROP CONSTRAINT FK_UserGroup_Group
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_Attachment_Message'
           AND parent_obj = Object_id('yaf_Attachment')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Attachment
DROP CONSTRAINT FK_Attachment_Message
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_NntpForum_NntpServer'
           AND parent_obj = Object_id('yaf_NntpForum')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_NntpForum
DROP CONSTRAINT FK_NntpForum_NntpServer
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_NntpForum_Forum'
           AND parent_obj = Object_id('yaf_NntpForum')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_NntpForum
DROP CONSTRAINT FK_NntpForum_Forum
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_NntpTopic_NntpForum'
           AND parent_obj = Object_id('yaf_NntpTopic')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_NntpTopic
DROP CONSTRAINT FK_NntpTopic_NntpForum
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_NntpTopic_Topic'
           AND parent_obj = Object_id('yaf_NntpTopic')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_NntpTopic
DROP CONSTRAINT FK_NntpTopic_Topic
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_ForumAccess_AccessMask'
           AND parent_obj = Object_id('yaf_ForumAccess')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_ForumAccess
DROP CONSTRAINT FK_ForumAccess_AccessMask
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_UserForum_User'
           AND parent_obj = Object_id('yaf_UserForum')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_UserForum
DROP CONSTRAINT FK_UserForum_User
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_UserForum_Forum'
           AND parent_obj = Object_id('yaf_UserForum')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_UserForum
DROP CONSTRAINT FK_UserForum_Forum
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_UserForum_AccessMask'
           AND parent_obj = Object_id('yaf_UserForum')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_UserForum
DROP CONSTRAINT FK_UserForum_AccessMask
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_Category_Board'
           AND parent_obj = Object_id('yaf_Category')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Category
DROP CONSTRAINT FK_Category_Board
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_AccessMask_Board'
           AND parent_obj = Object_id('yaf_AccessMask')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_AccessMask
DROP CONSTRAINT FK_AccessMask_Board
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_Active_Board'
           AND parent_obj = Object_id('yaf_Active')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Active
DROP CONSTRAINT FK_Active_Board
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_BannedIP_Board'
           AND parent_obj = Object_id('yaf_BannedIP')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_BannedIP
DROP CONSTRAINT FK_BannedIP_Board
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_Group_Board'
           AND parent_obj = Object_id('yaf_Group')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Group
DROP CONSTRAINT FK_Group_Board
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_NntpServer_Board'
           AND parent_obj = Object_id('yaf_NntpServer')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_NntpServer
DROP CONSTRAINT FK_NntpServer_Board
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_Rank_Board'
           AND parent_obj = Object_id('yaf_Rank')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Rank
DROP CONSTRAINT FK_Rank_Board
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_Smiley_Board'
           AND parent_obj = Object_id('yaf_Smiley')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Smiley
DROP CONSTRAINT FK_Smiley_Board
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_User_Rank'
           AND parent_obj = Object_id('yaf_User')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_User
DROP CONSTRAINT FK_User_Rank
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_User_Board'
           AND parent_obj = Object_id('yaf_User')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_User
DROP CONSTRAINT FK_User_Board
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_Forum_Forum'
           AND parent_obj = Object_id('yaf_Forum')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Forum
DROP CONSTRAINT FK_Forum_Forum
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_Message_Message'
           AND parent_obj = Object_id('yaf_Message')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Message
DROP CONSTRAINT FK_Message_Message
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_UserPMessage_User'
           AND parent_obj = Object_id('yaf_UserPMessage')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_UserPMessage
DROP CONSTRAINT FK_UserPMessage_User
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_UserPMessage_PMessage'
           AND parent_obj = Object_id('yaf_UserPMessage')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_UserPMessage
DROP CONSTRAINT FK_UserPMessage_PMessage
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_Registry_Board'
           AND parent_obj = Object_id('yaf_Registry')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Registry
DROP CONSTRAINT FK_Registry_Board
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_EventLog_User'
           AND parent_obj = Object_id('yaf_EventLog')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_EventLog
DROP CONSTRAINT FK_EventLog_User
GO

IF EXISTS (SELECT 1
           FROM   sysobjects
           WHERE  name = 'FK_yaf_PollVote_yaf_Poll'
           AND parent_obj = Object_id('yaf_PollVote')
           AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_PollVote
DROP CONSTRAINT FK_yaf_PollVote_yaf_Poll
GO

/* Drop old primary keys */
IF EXISTS (SELECT 1
           FROM   sysindexes
           WHERE  id = Object_id('yaf_BannedIP')
           AND name = 'PK_BannedIP')
ALTER TABLE dbo.yaf_BannedIP
DROP CONSTRAINT PK_BannedIP
GO

IF EXISTS (SELECT 1
           FROM   sysindexes
           WHERE  id = Object_id('yaf_Category')
           AND name = 'PK_Category')
ALTER TABLE dbo.yaf_Category
DROP CONSTRAINT PK_Category
GO

IF EXISTS (SELECT 1
           FROM   sysindexes
           WHERE  id = Object_id('yaf_CheckEmail')
           AND name = 'PK_CheckEmail')
ALTER TABLE dbo.yaf_CheckEmail
DROP CONSTRAINT PK_CheckEmail
GO

IF EXISTS (SELECT 1
           FROM   sysindexes
           WHERE  id = Object_id('yaf_Choice')
           AND name = 'PK_Choice')
ALTER TABLE dbo.yaf_Choice
DROP CONSTRAINT PK_Choice
GO

IF EXISTS (SELECT 1
           FROM   sysindexes
           WHERE  id = Object_id('yaf_Forum')
           AND name = 'PK_Forum')
ALTER TABLE dbo.yaf_Forum
DROP CONSTRAINT PK_Forum
GO

IF EXISTS (SELECT 1
           FROM   sysindexes
           WHERE  id = Object_id('yaf_ForumAccess')
           AND name = 'PK_ForumAccess')
ALTER TABLE dbo.yaf_ForumAccess
DROP CONSTRAINT PK_ForumAccess
GO

IF EXISTS (SELECT 1
           FROM   sysindexes
           WHERE  id = Object_id('yaf_Group')
           AND name = 'PK_Group')
ALTER TABLE dbo.yaf_Group
DROP CONSTRAINT PK_Group
GO

IF EXISTS (SELECT 1
           FROM   sysindexes
           WHERE  id = Object_id('yaf_Mail')
           AND name = 'PK_Mail')
ALTER TABLE dbo.yaf_Mail
DROP CONSTRAINT PK_Mail
GO

IF EXISTS (SELECT 1
           FROM   sysindexes
           WHERE  id = Object_id('yaf_Message')
           AND name = 'PK_Message')
ALTER TABLE dbo.yaf_Message
DROP CONSTRAINT PK_Message
GO

IF EXISTS (SELECT 1
           FROM   sysindexes
           WHERE  id = Object_id('yaf_PMessage')
           AND name = 'PK_PMessage')
ALTER TABLE dbo.yaf_PMessage
DROP CONSTRAINT PK_PMessage
GO

IF EXISTS (SELECT 1
           FROM   sysindexes
           WHERE  id = Object_id('yaf_Poll')
           AND name = 'PK_Poll')
ALTER TABLE dbo.yaf_Poll
DROP CONSTRAINT PK_Poll
GO

IF EXISTS (SELECT 1
           FROM   sysindexes
           WHERE  id = Object_id('yaf_Smiley')
           AND name = 'PK_Smiley')
ALTER TABLE dbo.yaf_Smiley
DROP CONSTRAINT PK_Smiley
GO

IF EXISTS (SELECT 1
           FROM   sysindexes
           WHERE  id = Object_id('yaf_Topic')
           AND name = 'PK_Topic')
ALTER TABLE dbo.yaf_Topic
DROP CONSTRAINT PK_Topic
GO

IF EXISTS (SELECT 1
           FROM   sysindexes
           WHERE  id = Object_id('yaf_User')
           AND name = 'PK_User')
ALTER TABLE dbo.yaf_User
DROP CONSTRAINT PK_User
GO

IF EXISTS (SELECT 1
           FROM   sysindexes
           WHERE  id = Object_id('yaf_WatchForum')
           AND name = 'PK_WatchForum')
ALTER TABLE dbo.yaf_WatchForum
DROP CONSTRAINT PK_WatchForum
GO

IF EXISTS (SELECT 1
           FROM   sysindexes
           WHERE  id = Object_id('yaf_WatchTopic')
           AND name = 'PK_WatchTopic')
ALTER TABLE dbo.yaf_WatchTopic
DROP CONSTRAINT PK_WatchTopic
GO

IF EXISTS (SELECT 1
           FROM   sysindexes
           WHERE  id = Object_id('yaf_UserGroup')
           AND name = 'PK_UserGroup')
ALTER TABLE dbo.yaf_UserGroup
DROP CONSTRAINT PK_UserGroup
GO

IF EXISTS (SELECT 1
           FROM   sysindexes
           WHERE  id = Object_id('yaf_Rank')
           AND name = 'PK_Rank')
ALTER TABLE dbo.yaf_Rank
DROP CONSTRAINT PK_Rank
GO

IF EXISTS (SELECT 1
           FROM   sysindexes
           WHERE  id = Object_id('yaf_NntpServer')
           AND name = 'PK_NntpServer')
ALTER TABLE dbo.yaf_NntpServer
DROP CONSTRAINT PK_NntpServer
GO

IF EXISTS (SELECT 1
           FROM   sysindexes
           WHERE  id = Object_id('yaf_NntpForum')
           AND name = 'PK_NntpForum')
ALTER TABLE dbo.yaf_NntpForum
DROP CONSTRAINT PK_NntpForum
GO

IF EXISTS (SELECT 1
           FROM   sysindexes
           WHERE  id = Object_id('yaf_NntpTopic')
           AND name = 'PK_NntpTopic')
ALTER TABLE dbo.yaf_NntpTopic
DROP CONSTRAINT PK_NntpTopic
GO

IF EXISTS (SELECT *
           FROM   sysindexes
           WHERE  id = Object_id('yaf_AccessMask')
           AND name = 'PK_AccessMask')
ALTER TABLE dbo.yaf_AccessMask
DROP CONSTRAINT PK_AccessMask
GO

IF EXISTS (SELECT *
           FROM   sysindexes
           WHERE  id = Object_id('yaf_UserForum')
           AND name = 'PK_UserForum')
ALTER TABLE dbo.yaf_UserForum
DROP CONSTRAINT PK_UserForum
GO

IF EXISTS (SELECT *
           FROM   sysindexes
           WHERE  id = Object_id('yaf_Board')
           AND name = 'PK_Board')
ALTER TABLE dbo.yaf_Board
DROP CONSTRAINT PK_Board
GO

IF EXISTS (SELECT *
           FROM   sysindexes
           WHERE  id = Object_id('yaf_Active')
           AND name = 'PK_Active')
ALTER TABLE dbo.yaf_Active
DROP CONSTRAINT PK_Active
GO

IF EXISTS (SELECT *
           FROM   sysindexes
           WHERE  id = Object_id('yaf_UserPMessage')
           AND name = 'PK_UserPMessage')
ALTER TABLE dbo.yaf_UserPMessage
DROP CONSTRAINT PK_UserPMessage
GO

IF EXISTS (SELECT *
           FROM   sysindexes
           WHERE  id = Object_id('yaf_Attachment')
           AND name = 'PK_Attachment')
ALTER TABLE dbo.yaf_Attachment
DROP CONSTRAINT PK_Attachment
GO

IF EXISTS (SELECT *
           FROM   sysindexes
           WHERE  id = Object_id('yaf_Active')
           AND name = 'PK_Active')
ALTER TABLE dbo.yaf_Active
DROP CONSTRAINT PK_Active
GO

IF EXISTS (SELECT *
           FROM   sysindexes
           WHERE  id = Object_id('yaf_PollVote')
           AND name = 'PK_PollVote')
ALTER TABLE dbo.yaf_PollVote
DROP CONSTRAINT PK_PollVote
GO

/*
** Unique constraints
*/
IF EXISTS (SELECT 1
           FROM   sysindexes
           WHERE  id = Object_id('yaf_CheckEmail')
           AND name = 'IX_CheckEmail')
ALTER TABLE dbo.yaf_CheckEmail
DROP CONSTRAINT IX_CheckEmail
GO

IF EXISTS (SELECT 1
           FROM   sysindexes
           WHERE  id = Object_id('yaf_Forum')
           AND name = 'IX_Forum')
ALTER TABLE dbo.yaf_Forum
DROP CONSTRAINT IX_Forum
GO

IF EXISTS (SELECT 1
           FROM   sysindexes
           WHERE  id = Object_id('yaf_WatchForum')
           AND name = 'IX_WatchForum')
ALTER TABLE dbo.yaf_WatchForum
DROP CONSTRAINT IX_WatchForum
GO

IF EXISTS (SELECT 1
           FROM   sysindexes
           WHERE  id = Object_id('yaf_WatchTopic')
           AND name = 'IX_WatchTopic')
ALTER TABLE dbo.yaf_WatchTopic
DROP CONSTRAINT IX_WatchTopic
GO

IF EXISTS (SELECT *
           FROM   sysindexes
           WHERE  id = Object_id('yaf_Category')
           AND name = 'IX_Category')
ALTER TABLE dbo.yaf_Category
DROP CONSTRAINT IX_Category
GO

IF EXISTS (SELECT *
           FROM   sysindexes
           WHERE  id = Object_id('yaf_Rank')
           AND name = 'IX_Rank')
ALTER TABLE dbo.yaf_Rank
DROP CONSTRAINT IX_Rank
GO

IF EXISTS (SELECT *
           FROM   sysindexes
           WHERE  id = Object_id('yaf_User')
           AND name = 'IX_User')
ALTER TABLE dbo.yaf_User
DROP CONSTRAINT IX_User
GO

IF EXISTS (SELECT *
           FROM   sysindexes
           WHERE  id = Object_id('yaf_Group')
           AND name = 'IX_Group')
ALTER TABLE dbo.yaf_Group
DROP CONSTRAINT IX_Group
GO

IF EXISTS (SELECT *
           FROM   sysindexes
           WHERE  id = Object_id('yaf_BannedIP')
           AND name = 'IX_BannedIP')
ALTER TABLE dbo.yaf_BannedIP
DROP CONSTRAINT IX_BannedIP
GO

IF EXISTS (SELECT *
           FROM   sysindexes
           WHERE  id = Object_id('yaf_Smiley')
           AND name = 'IX_Smiley')
ALTER TABLE dbo.yaf_Smiley
DROP CONSTRAINT IX_Smiley
GO

IF EXISTS (SELECT *
           FROM   sysindexes
           WHERE  id = Object_id('yaf_BannedIP')
           AND name = 'IX_BannedIP')
ALTER TABLE dbo.yaf_BannedIP
DROP CONSTRAINT IX_BannedIP
GO

IF EXISTS (SELECT *
           FROM   sysindexes
           WHERE  id = Object_id('yaf_Category')
           AND name = 'IX_Category')
ALTER TABLE dbo.yaf_Category
DROP CONSTRAINT IX_Category
GO

IF EXISTS (SELECT *
           FROM   sysindexes
           WHERE  id = Object_id('yaf_CheckEmail')
           AND name = 'IX_CheckEmail')
ALTER TABLE dbo.yaf_CheckEmail
DROP CONSTRAINT IX_CheckEmail
GO

IF EXISTS (SELECT *
           FROM   sysindexes
           WHERE  id = Object_id('yaf_Forum')
           AND name = 'IX_Forum')
ALTER TABLE dbo.yaf_Forum
DROP CONSTRAINT IX_Forum
GO

IF EXISTS (SELECT *
           FROM   sysindexes
           WHERE  id = Object_id('yaf_Group')
           AND name = 'IX_Group')
ALTER TABLE dbo.yaf_Group
DROP CONSTRAINT IX_Group
GO

IF EXISTS (SELECT *
           FROM   sysindexes
           WHERE  id = Object_id('yaf_Rank')
           AND name = 'IX_Rank')
ALTER TABLE dbo.yaf_Rank
DROP CONSTRAINT IX_Rank
GO

IF EXISTS (SELECT *
           FROM   sysindexes
           WHERE  id = Object_id('yaf_Smiley')
           AND name = 'IX_Smiley')
ALTER TABLE dbo.yaf_Smiley
DROP CONSTRAINT IX_Smiley
GO

IF EXISTS (SELECT *
           FROM   sysindexes
           WHERE  id = Object_id('yaf_User')
           AND name = 'IX_User')
ALTER TABLE dbo.yaf_User
DROP CONSTRAINT IX_User
GO

/* Build new constraints */

/*
** Primary keys
*/
IF NOT EXISTS (SELECT 1
               FROM   sysindexes
               WHERE  id = Object_id('yaf_BannedIP')
               AND name = 'PK_yaf_BannedIP')
ALTER TABLE dbo.yaf_BannedIP
WITH NOCHECK ADD CONSTRAINT PK_yaf_BannedIP PRIMARY KEY CLUSTERED( ID  )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysindexes
               WHERE  id = Object_id('yaf_Category')
               AND name = 'PK_yaf_Category')
ALTER TABLE dbo.yaf_Category
WITH NOCHECK ADD CONSTRAINT PK_yaf_Category PRIMARY KEY CLUSTERED( CategoryID  )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysindexes
               WHERE  id = Object_id('yaf_CheckEmail')
               AND name = 'PK_yaf_CheckEmail')
ALTER TABLE dbo.yaf_CheckEmail
WITH NOCHECK ADD CONSTRAINT PK_yaf_CheckEmail PRIMARY KEY CLUSTERED( CheckEmailID  )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysindexes
               WHERE  id = Object_id('yaf_Choice')
               AND name = 'PK_yaf_Choice')
ALTER TABLE dbo.yaf_Choice
WITH NOCHECK ADD CONSTRAINT PK_yaf_Choice PRIMARY KEY CLUSTERED( ChoiceID  )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysindexes
               WHERE  id = Object_id('yaf_Forum')
               AND name = 'PK_yaf_Forum')
ALTER TABLE dbo.yaf_Forum
WITH NOCHECK ADD CONSTRAINT PK_yaf_Forum PRIMARY KEY CLUSTERED( ForumID  )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysindexes
               WHERE  id = Object_id('yaf_ForumAccess')
               AND name = 'PK_yaf_ForumAccess')
ALTER TABLE dbo.yaf_ForumAccess
WITH NOCHECK ADD CONSTRAINT PK_yaf_ForumAccess PRIMARY KEY CLUSTERED( GroupID  , ForumID  )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysindexes
               WHERE  id = Object_id('yaf_Group')
               AND name = 'PK_yaf_Group')
ALTER TABLE dbo.yaf_Group
WITH NOCHECK ADD CONSTRAINT PK_yaf_Group PRIMARY KEY CLUSTERED( GroupID  )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysindexes
               WHERE  id = Object_id('yaf_Mail')
               AND name = 'PK_yaf_Mail')
ALTER TABLE dbo.yaf_Mail
WITH NOCHECK ADD CONSTRAINT PK_yaf_Mail PRIMARY KEY CLUSTERED( MailID  )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysindexes
               WHERE  id = Object_id('yaf_Message')
               AND name = 'PK_yaf_Message')
ALTER TABLE dbo.yaf_Message
WITH NOCHECK ADD CONSTRAINT PK_yaf_Message PRIMARY KEY CLUSTERED( MessageID  )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysindexes
               WHERE  id = Object_id('yaf_PMessage')
               AND name = 'PK_yaf_PMessage')
ALTER TABLE dbo.yaf_PMessage
WITH NOCHECK ADD CONSTRAINT PK_yaf_PMessage PRIMARY KEY CLUSTERED( PMessageID  )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysindexes
               WHERE  id = Object_id('yaf_Poll')
               AND name = 'PK_yaf_Poll')
ALTER TABLE dbo.yaf_Poll
WITH NOCHECK ADD CONSTRAINT PK_yaf_Poll PRIMARY KEY CLUSTERED( PollID  )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysindexes
               WHERE  id = Object_id('yaf_Smiley')
               AND name = 'PK_yaf_Smiley')
ALTER TABLE dbo.yaf_Smiley
WITH NOCHECK ADD CONSTRAINT PK_yaf_Smiley PRIMARY KEY CLUSTERED( SmileyID  )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysindexes
               WHERE  id = Object_id('yaf_Topic')
               AND name = 'PK_yaf_Topic')
ALTER TABLE dbo.yaf_Topic
WITH NOCHECK ADD CONSTRAINT PK_yaf_Topic PRIMARY KEY CLUSTERED( TopicID  )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysindexes
               WHERE  id = Object_id('yaf_User')
               AND name = 'PK_yaf_yaf_User')
ALTER TABLE dbo.yaf_User
WITH NOCHECK ADD CONSTRAINT PK_yaf_yaf_User PRIMARY KEY CLUSTERED( UserID  )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysindexes
               WHERE  id = Object_id('yaf_WatchForum')
               AND name = 'PK_yaf_WatchForum')
ALTER TABLE dbo.yaf_WatchForum
WITH NOCHECK ADD CONSTRAINT PK_yaf_WatchForum PRIMARY KEY CLUSTERED( WatchForumID  )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysindexes
               WHERE  id = Object_id('yaf_WatchTopic')
               AND name = 'PK_yaf_WatchTopic')
ALTER TABLE dbo.yaf_WatchTopic
WITH NOCHECK ADD CONSTRAINT PK_yaf_WatchTopic PRIMARY KEY CLUSTERED( WatchTopicID  )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysindexes
               WHERE  id = Object_id('yaf_UserGroup')
               AND name = 'PK_yaf_UserGroup')
ALTER TABLE dbo.yaf_UserGroup
WITH NOCHECK ADD CONSTRAINT PK_yaf_UserGroup PRIMARY KEY CLUSTERED( UserID  , GroupID  )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysindexes
               WHERE  id = Object_id('yaf_Rank')
               AND name = 'PK_yaf_Rank')
ALTER TABLE dbo.yaf_Rank
WITH NOCHECK ADD CONSTRAINT PK_yaf_Rank PRIMARY KEY CLUSTERED( RankID  )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysindexes
               WHERE  id = Object_id('yaf_NntpServer')
               AND name = 'PK_yaf_NntpServer')
ALTER TABLE dbo.yaf_NntpServer
WITH NOCHECK ADD CONSTRAINT PK_yaf_NntpServer PRIMARY KEY CLUSTERED( NntpServerID  )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysindexes
               WHERE  id = Object_id('yaf_NntpForum')
               AND name = 'PK_yaf_NntpForum')
ALTER TABLE dbo.yaf_NntpForum
WITH NOCHECK ADD CONSTRAINT PK_yaf_NntpForum PRIMARY KEY CLUSTERED( NntpForumID  )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysindexes
               WHERE  id = Object_id('yaf_NntpTopic')
               AND name = 'PK_yaf_NntpTopic')
ALTER TABLE dbo.yaf_NntpTopic
WITH NOCHECK ADD CONSTRAINT PK_yaf_NntpTopic PRIMARY KEY CLUSTERED( NntpTopicID  )
GO

IF NOT EXISTS (SELECT *
               FROM   sysindexes
               WHERE  id = Object_id('yaf_AccessMask')
               AND name = 'PK_yaf_AccessMask')
ALTER TABLE dbo.yaf_AccessMask
WITH NOCHECK ADD CONSTRAINT PK_yaf_AccessMask PRIMARY KEY CLUSTERED( AccessMaskID  )
GO

IF NOT EXISTS (SELECT *
               FROM   sysindexes
               WHERE  id = Object_id('yaf_UserForum')
               AND name = 'PK_yaf_UserForum')
ALTER TABLE dbo.yaf_UserForum
WITH NOCHECK ADD CONSTRAINT PK_yaf_UserForum PRIMARY KEY CLUSTERED( UserID  , ForumID  )
GO

IF NOT EXISTS (SELECT *
               FROM   sysindexes
               WHERE  id = Object_id('yaf_Board')
               AND name = 'PK_yaf_Board')
ALTER TABLE dbo.yaf_Board
WITH NOCHECK ADD CONSTRAINT PK_yaf_Board PRIMARY KEY CLUSTERED( BoardID  )
GO

IF NOT EXISTS (SELECT *
               FROM   sysindexes
               WHERE  id = Object_id('yaf_Active')
               AND name = 'PK_yaf_Active')
ALTER TABLE dbo.yaf_Active
WITH NOCHECK ADD CONSTRAINT PK_yaf_Active PRIMARY KEY CLUSTERED( SessionID  , BoardID  )
GO

IF NOT EXISTS (SELECT *
               FROM   sysindexes
               WHERE  id = Object_id('yaf_UserPMessage')
               AND name = 'PK_yaf_UserPMessage')
ALTER TABLE dbo.yaf_UserPMessage
WITH NOCHECK ADD CONSTRAINT PK_yaf_UserPMessage PRIMARY KEY CLUSTERED( UserPMessageID  )
GO

IF NOT EXISTS (SELECT *
               FROM   sysindexes
               WHERE  id = Object_id('yaf_Attachment')
               AND name = 'PK_yaf_Attachment')
ALTER TABLE dbo.yaf_Attachment
WITH NOCHECK ADD CONSTRAINT PK_yaf_Attachment PRIMARY KEY CLUSTERED( AttachmentID  )
GO

IF NOT EXISTS (SELECT *
               FROM   sysindexes
               WHERE  id = Object_id('yaf_Active')
               AND name = 'PK_yaf_Active')
ALTER TABLE dbo.yaf_Active
WITH NOCHECK ADD CONSTRAINT PK_yaf_Active PRIMARY KEY CLUSTERED( SessionID  , BoardID  )
GO

IF NOT EXISTS (SELECT *
               FROM   sysindexes
               WHERE  id = Object_id('yaf_PollVote')
               AND name = 'PK_yaf_PollVote')
ALTER TABLE dbo.yaf_PollVote
WITH NOCHECK ADD CONSTRAINT PK_yaf_PollVote PRIMARY KEY CLUSTERED( PollVoteID  )
GO

/*
** Unique constraints
*/
IF NOT EXISTS (SELECT 1
               FROM   sysindexes
               WHERE  id = Object_id('yaf_CheckEmail')
               AND name = 'IX_yaf_CheckEmail')
/*
** Unique constraints
*/
IF NOT EXISTS ( SELECT 1 FROM sysindexes WHERE id = Object_id ( 'yaf_CheckEmail' ) AND name = 'IX_yaf_CheckEmail' ) ALTER TABLE dbo.yaf_CheckEmail ADD CONSTRAINT IX_yaf_CheckEmail UNIQUE NONCLUSTERED ( HASH )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysindexes
               WHERE  id = Object_id('yaf_Forum')
               AND name = 'IX_yaf_Forum')
ALTER TABLE dbo.yaf_Forum
ADD CONSTRAINT IX_yaf_Forum UNIQUE NONCLUSTERED( CategoryID  , Name  )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysindexes
               WHERE  id = Object_id('yaf_WatchForum')
               AND name = 'IX_yaf_WatchForum')
ALTER TABLE dbo.yaf_WatchForum
ADD CONSTRAINT IX_yaf_WatchForum UNIQUE NONCLUSTERED( ForumID  , UserID  )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysindexes
               WHERE  id = Object_id('yaf_WatchTopic')
               AND name = 'IX_yaf_WatchTopic')
ALTER TABLE dbo.yaf_WatchTopic
ADD CONSTRAINT IX_yaf_WatchTopic UNIQUE NONCLUSTERED( TopicID  , UserID  )
GO

IF NOT EXISTS (SELECT *
               FROM   sysindexes
               WHERE  id = Object_id('yaf_Category')
               AND name = 'IX_yaf_Category')
ALTER TABLE dbo.yaf_Category
ADD CONSTRAINT IX_yaf_Category UNIQUE NONCLUSTERED( BoardID  , Name  )
GO

IF NOT EXISTS (SELECT *
               FROM   sysindexes
               WHERE  id = Object_id('yaf_Rank')
               AND name = 'IX_yaf_Rank')
ALTER TABLE dbo.yaf_Rank
ADD CONSTRAINT IX_yaf_Rank UNIQUE( BoardID  , Name  )
GO

IF NOT EXISTS (SELECT *
               FROM   sysindexes
               WHERE  id = Object_id('yaf_User')
               AND name = 'IX_yaf_User')
ALTER TABLE dbo.yaf_User
ADD CONSTRAINT IX_yaf_User UNIQUE NONCLUSTERED( BoardID  , Name  )
GO

IF NOT EXISTS (SELECT *
               FROM   sysindexes
               WHERE  id = Object_id('yaf_Group')
               AND name = 'IX_yaf_Group')
ALTER TABLE dbo.yaf_Group
ADD CONSTRAINT IX_yaf_Group UNIQUE NONCLUSTERED( BoardID  , Name  )
GO

IF NOT EXISTS (SELECT *
               FROM   sysindexes
               WHERE  id = Object_id('yaf_BannedIP')
               AND name = 'IX_yaf_BannedIP')
ALTER TABLE dbo.yaf_BannedIP
ADD CONSTRAINT IX_yaf_BannedIP UNIQUE NONCLUSTERED( BoardID  , Mask  )
GO

IF NOT EXISTS (SELECT *
               FROM   sysindexes
               WHERE  id = Object_id('yaf_Smiley')
               AND name = 'IX_yaf_Smiley')
ALTER TABLE dbo.yaf_Smiley
ADD CONSTRAINT IX_yaf_Smiley UNIQUE NONCLUSTERED( BoardID  , Code  )
GO

IF NOT EXISTS (SELECT *
               FROM   sysindexes
               WHERE  id = Object_id('yaf_BannedIP')
               AND name = 'IX_yaf_BannedIP')
ALTER TABLE dbo.yaf_BannedIP
ADD CONSTRAINT IX_yaf_BannedIP UNIQUE NONCLUSTERED( BoardID  , Mask  )
GO

IF NOT EXISTS (SELECT *
               FROM   sysindexes
               WHERE  id = Object_id('yaf_Category')
               AND name = 'IX_yaf_Category')
ALTER TABLE dbo.yaf_Category
ADD CONSTRAINT IX_yaf_Category UNIQUE NONCLUSTERED( BoardID  , Name  )
GO

IF NOT EXISTS (SELECT *
               FROM   sysindexes
               WHERE  id = Object_id('yaf_CheckEmail')
               AND name = 'IX_yaf_CheckEmail')
IF NOT EXISTS ( SELECT * FROM sysindexes WHERE id = Object_id ( 'yaf_CheckEmail' ) AND name = 'IX_yaf_CheckEmail' ) ALTER TABLE dbo.yaf_CheckEmail ADD CONSTRAINT IX_yaf_CheckEmail UNIQUE NONCLUSTERED ( HASH )
GO

IF NOT EXISTS (SELECT *
               FROM   sysindexes
               WHERE  id = Object_id('yaf_Forum')
               AND name = 'IX_yaf_Forum')
ALTER TABLE dbo.yaf_Forum
ADD CONSTRAINT IX_yaf_Forum UNIQUE NONCLUSTERED( CategoryID  , Name  )
GO

IF NOT EXISTS (SELECT *
               FROM   sysindexes
               WHERE  id = Object_id('yaf_Group')
               AND name = 'IX_yaf_Group')
ALTER TABLE dbo.yaf_Group
ADD CONSTRAINT IX_yaf_Group UNIQUE NONCLUSTERED( BoardID  , Name  )
GO

IF NOT EXISTS (SELECT *
               FROM   sysindexes
               WHERE  id = Object_id('yaf_Rank')
               AND name = 'IX_yaf_Rank')
ALTER TABLE dbo.yaf_Rank
ADD CONSTRAINT IX_yaf_Rank UNIQUE NONCLUSTERED( BoardID  , Name  )
GO

IF NOT EXISTS (SELECT *
               FROM   sysindexes
               WHERE  id = Object_id('yaf_Smiley')
               AND name = 'IX_yaf_Smiley')
ALTER TABLE dbo.yaf_Smiley
ADD CONSTRAINT IX_yaf_Smiley UNIQUE NONCLUSTERED( BoardID  , Code  )
GO

IF NOT EXISTS (SELECT *
               FROM   sysindexes
               WHERE  id = Object_id('yaf_User')
               AND name = 'IX_yaf_User')
ALTER TABLE dbo.yaf_User
ADD CONSTRAINT IX_yaf_User UNIQUE NONCLUSTERED( BoardID  , Name  )
GO

/*
** Foreign keys
*/
IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_Active_yaf_Forum'
               AND parent_obj = Object_id('yaf_Active')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Active
ADD CONSTRAINT FK_yaf_Active_yaf_Forum FOREIGN KEY( ForumID ) REFERENCES dbo.yaf_Forum( ForumID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_Active_yaf_Topic'
               AND parent_obj = Object_id('yaf_Active')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Active
ADD CONSTRAINT FK_yaf_Active_yaf_Topic FOREIGN KEY( TopicID ) REFERENCES dbo.yaf_Topic( TopicID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_Active_yaf_User'
               AND parent_obj = Object_id('yaf_Active')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Active
ADD CONSTRAINT FK_yaf_Active_yaf_User FOREIGN KEY( UserID ) REFERENCES dbo.yaf_User( UserID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_CheckEmail_yaf_User'
               AND parent_obj = Object_id('yaf_CheckEmail')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_CheckEmail
ADD CONSTRAINT FK_yaf_CheckEmail_yaf_User FOREIGN KEY( UserID ) REFERENCES dbo.yaf_User( UserID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_Choice_yaf_Poll'
               AND parent_obj = Object_id('yaf_Choice')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Choice
ADD CONSTRAINT FK_yaf_Choice_yaf_Poll FOREIGN KEY( PollID ) REFERENCES dbo.yaf_Poll( PollID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_Forum_yaf_Category'
               AND parent_obj = Object_id('yaf_Forum')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Forum
ADD CONSTRAINT FK_yaf_Forum_yaf_Category FOREIGN KEY( CategoryID ) REFERENCES dbo.yaf_Category( CategoryID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_Forum_yaf_Message'
               AND parent_obj = Object_id('yaf_Forum')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Forum
ADD CONSTRAINT FK_yaf_Forum_yaf_Message FOREIGN KEY( LastMessageID ) REFERENCES dbo.yaf_Message( MessageID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_Forum_yaf_Topic'
               AND parent_obj = Object_id('yaf_Forum')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Forum
ADD CONSTRAINT FK_yaf_Forum_yaf_Topic FOREIGN KEY( LastTopicID ) REFERENCES dbo.yaf_Topic( TopicID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_Forum_yaf_User'
               AND parent_obj = Object_id('yaf_Forum')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Forum
ADD CONSTRAINT FK_yaf_Forum_yaf_User FOREIGN KEY( LastUserID ) REFERENCES dbo.yaf_User( UserID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_ForumAccess_yaf_Forum'
               AND parent_obj = Object_id('yaf_ForumAccess')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_ForumAccess
ADD CONSTRAINT FK_yaf_ForumAccess_yaf_Forum FOREIGN KEY( ForumID ) REFERENCES dbo.yaf_Forum( ForumID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_ForumAccess_yaf_Group'
               AND parent_obj = Object_id('yaf_ForumAccess')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_ForumAccess
ADD CONSTRAINT FK_yaf_ForumAccess_yaf_Group FOREIGN KEY( GroupID ) REFERENCES dbo.yaf_Group( GroupID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_Message_yaf_Topic'
               AND parent_obj = Object_id('yaf_Message')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Message
ADD CONSTRAINT FK_yaf_Message_yaf_Topic FOREIGN KEY( TopicID ) REFERENCES dbo.yaf_Topic( TopicID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_Message_yaf_User'
               AND parent_obj = Object_id('yaf_Message')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Message
ADD CONSTRAINT FK_yaf_Message_yaf_User FOREIGN KEY( UserID ) REFERENCES dbo.yaf_User( UserID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_PMessage_yaf_User1'
               AND parent_obj = Object_id('yaf_PMessage')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_PMessage
ADD CONSTRAINT FK_yaf_PMessage_yaf_User1 FOREIGN KEY( FromUserID ) REFERENCES dbo.yaf_User( UserID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_Topic_yaf_Forum'
               AND parent_obj = Object_id('yaf_Topic')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Topic
ADD CONSTRAINT FK_yaf_Topic_yaf_Forum FOREIGN KEY( ForumID ) REFERENCES dbo.yaf_Forum( ForumID ) ON DELETE CASCADE
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_Topic_yaf_Message'
               AND parent_obj = Object_id('yaf_Topic')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Topic
ADD CONSTRAINT FK_yaf_Topic_yaf_Message FOREIGN KEY( LastMessageID ) REFERENCES dbo.yaf_Message( MessageID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_Topic_yaf_Poll'
               AND parent_obj = Object_id('yaf_Topic')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Topic
ADD CONSTRAINT FK_yaf_Topic_yaf_Poll FOREIGN KEY( PollID ) REFERENCES dbo.yaf_Poll( PollID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_Topic_yaf_Topic'
               AND parent_obj = Object_id('yaf_Topic')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Topic
ADD CONSTRAINT FK_yaf_Topic_yaf_Topic FOREIGN KEY( TopicMovedID ) REFERENCES dbo.yaf_Topic( TopicID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_Topic_yaf_User'
               AND parent_obj = Object_id('yaf_Topic')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Topic
ADD CONSTRAINT FK_yaf_Topic_yaf_User FOREIGN KEY( UserID ) REFERENCES dbo.yaf_User( UserID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_Topic_yaf_User2'
               AND parent_obj = Object_id('yaf_Topic')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Topic
ADD CONSTRAINT FK_yaf_Topic_yaf_User2 FOREIGN KEY( LastUserID ) REFERENCES dbo.yaf_User( UserID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_WatchForum_yaf_Forum'
               AND parent_obj = Object_id('yaf_WatchForum')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_WatchForum
ADD CONSTRAINT FK_yaf_WatchForum_yaf_Forum FOREIGN KEY( ForumID ) REFERENCES dbo.yaf_Forum( ForumID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_WatchForum_yaf_User'
               AND parent_obj = Object_id('yaf_WatchForum')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_WatchForum
ADD CONSTRAINT FK_yaf_WatchForum_yaf_User FOREIGN KEY( UserID ) REFERENCES dbo.yaf_User( UserID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_WatchTopic_yaf_Topic'
               AND parent_obj = Object_id('yaf_WatchTopic')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_WatchTopic
ADD CONSTRAINT FK_yaf_WatchTopic_yaf_Topic FOREIGN KEY( TopicID ) REFERENCES dbo.yaf_Topic( TopicID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_WatchTopic_yaf_User'
               AND parent_obj = Object_id('yaf_WatchTopic')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_WatchTopic
ADD CONSTRAINT FK_yaf_WatchTopic_yaf_User FOREIGN KEY( UserID ) REFERENCES dbo.yaf_User( UserID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_Active_yaf_Forum'
               AND parent_obj = Object_id('yaf_Active')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Attachment
ADD CONSTRAINT FK_yaf_Active_yaf_Forum FOREIGN KEY( MessageID ) REFERENCES yaf_Message( MessageID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_UserGroup_yaf_User'
               AND parent_obj = Object_id('yaf_UserGroup')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_UserGroup
ADD CONSTRAINT FK_yaf_UserGroup_yaf_User FOREIGN KEY( UserID ) REFERENCES yaf_User( UserID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_UserGroup_yaf_Group'
               AND parent_obj = Object_id('yaf_UserGroup')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_UserGroup
ADD CONSTRAINT FK_yaf_UserGroup_yaf_Group FOREIGN KEY( GroupID ) REFERENCES yaf_Group( GroupID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_Attachment_yaf_Message'
               AND parent_obj = Object_id('yaf_Attachment')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Attachment
ADD CONSTRAINT FK_yaf_Attachment_yaf_Message FOREIGN KEY( MessageID ) REFERENCES yaf_Message( MessageID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_NntpForum_yaf_NntpServer'
               AND parent_obj = Object_id('yaf_NntpForum')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_NntpForum
ADD CONSTRAINT FK_yaf_NntpForum_yaf_NntpServer FOREIGN KEY( NntpServerID ) REFERENCES yaf_NntpServer( NntpServerID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_NntpForum_yaf_Forum'
               AND parent_obj = Object_id('yaf_NntpForum')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_NntpForum
ADD CONSTRAINT FK_yaf_NntpForum_yaf_Forum FOREIGN KEY( ForumID ) REFERENCES yaf_Forum( ForumID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_NntpTopic_yaf_NntpForum'
               AND parent_obj = Object_id('yaf_NntpTopic')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_NntpTopic
ADD CONSTRAINT FK_yaf_NntpTopic_yaf_NntpForum FOREIGN KEY( NntpForumID ) REFERENCES yaf_NntpForum( NntpForumID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_NntpTopic_yaf_Topic'
               AND parent_obj = Object_id('yaf_NntpTopic')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_NntpTopic
ADD CONSTRAINT FK_yaf_NntpTopic_yaf_Topic FOREIGN KEY( TopicID ) REFERENCES yaf_Topic( TopicID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_ForumAccess_yaf_AccessMask'
               AND parent_obj = Object_id('yaf_ForumAccess')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_ForumAccess
ADD CONSTRAINT FK_yaf_ForumAccess_yaf_AccessMask FOREIGN KEY( AccessMaskID ) REFERENCES yaf_AccessMask( AccessMaskID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_UserForum_yaf_User'
               AND parent_obj = Object_id('yaf_UserForum')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_UserForum
ADD CONSTRAINT FK_yaf_UserForum_yaf_User FOREIGN KEY( UserID ) REFERENCES yaf_User( UserID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_UserForum_yaf_Forum'
               AND parent_obj = Object_id('yaf_UserForum')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_UserForum
ADD CONSTRAINT FK_yaf_UserForum_yaf_Forum FOREIGN KEY( ForumID ) REFERENCES yaf_Forum( ForumID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_UserForum_yaf_AccessMask'
               AND parent_obj = Object_id('yaf_UserForum')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_UserForum
ADD CONSTRAINT FK_yaf_UserForum_yaf_AccessMask FOREIGN KEY( AccessMaskID ) REFERENCES yaf_AccessMask( AccessMaskID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_Category_yaf_Board'
               AND parent_obj = Object_id('yaf_Category')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Category
ADD CONSTRAINT FK_yaf_Category_yaf_Board FOREIGN KEY( BoardID ) REFERENCES yaf_Board( BoardID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_AccessMask_yaf_Board'
               AND parent_obj = Object_id('yaf_AccessMask')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_AccessMask
ADD CONSTRAINT FK_yaf_AccessMask_yaf_Board FOREIGN KEY( BoardID ) REFERENCES yaf_Board( BoardID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_Active_yaf_Board'
               AND parent_obj = Object_id('yaf_Active')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Active
ADD CONSTRAINT FK_yaf_Active_yaf_Board FOREIGN KEY( BoardID ) REFERENCES yaf_Board( BoardID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_BannedIP_yaf_Board'
               AND parent_obj = Object_id('yaf_BannedIP')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_BannedIP
ADD CONSTRAINT FK_yaf_BannedIP_yaf_Board FOREIGN KEY( BoardID ) REFERENCES yaf_Board( BoardID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_Group_yaf_Board'
               AND parent_obj = Object_id('yaf_Group')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Group
ADD CONSTRAINT FK_yaf_Group_yaf_Board FOREIGN KEY( BoardID ) REFERENCES yaf_Board( BoardID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_NntpServer_yaf_Board'
               AND parent_obj = Object_id('yaf_NntpServer')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_NntpServer
ADD CONSTRAINT FK_yaf_NntpServer_yaf_Board FOREIGN KEY( BoardID ) REFERENCES yaf_Board( BoardID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_Rank_yaf_Board'
               AND parent_obj = Object_id('yaf_Rank')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Rank
ADD CONSTRAINT FK_yaf_Rank_yaf_Board FOREIGN KEY( BoardID ) REFERENCES yaf_Board( BoardID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_Smiley_yaf_Board'
               AND parent_obj = Object_id('yaf_Smiley')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_Smiley
ADD CONSTRAINT FK_yaf_Smiley_yaf_Board FOREIGN KEY( BoardID ) REFERENCES yaf_Board( BoardID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_User_yaf_Rank'
               AND parent_obj = Object_id('yaf_User')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_User
ADD CONSTRAINT FK_yaf_User_yaf_Rank FOREIGN KEY( RankID ) REFERENCES yaf_Rank( RankID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_User_yaf_Board'
               AND parent_obj = Object_id('yaf_User')
               AND Objectproperty(id,N'IsForeignKey') = 1)
ALTER TABLE dbo.yaf_User
ADD CONSTRAINT FK_yaf_User_yaf_Board FOREIGN KEY( BoardID ) REFERENCES yaf_Board( BoardID )
GO

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  name = 'FK_yaf_Forum_yaf_