Código:
USE [MuOnline] GO
SET ANSI_NULLS OFF GO
SET QUOTED_IDENTIFIER ON GO
CREATE PROCEDURE [dbo].[WZ_CONNECT_MEMB]
@uid varchar(20),
@server varchar(20),
@uip varchar(20) AS BEGIN BEGIN TRANSACTION
SET NOCOUNT ON IF EXISTS
(SELECT memb___id
FROM MEMB_STAT WITH (READUNCOMMITTED)
WHERE memb___id = @uid ) BEGIN
UPDATE MEMB_STAT
SET ip = @uip,
connectstat = 1,
servername = @server,
ConnectTM = (getdate())
WHERE memb___id = @uid;
UPDATE Character
SET MapNumber = '0',
MapPosX='130',
MapPosY='125'
WHERE AccountID = @uid AND MapNumber='30'; END
ELSE BEGIN
INSERT INTO MEMB_STAT (memb___id, ip, connectstat, servername)
VALUES (@uid,
@uip,
1,
@server) END
IF(@@Error <> 0)
ROLLBACK TRANSACTION
ELSE
COMMIT TRANSACTION
SET NOCOUNT OFF END
Criada a procedure
Código:
USE [MuOnline] GO
SET ANSI_NULLS OFF GO
SET QUOTED_IDENTIFIER ON GO
CREATE PROCEDURE [dbo].[WZ_DISCONNECT_MEMB]
@uid varchar(20) AS BEGIN BEGIN TRANSACTION
SET NOCOUNT ON IF EXISTS
(SELECT memb___id
FROM MEMB_STAT WITH (READUNCOMMITTED)
WHERE memb___id = @uid ) BEGIN
UPDATE MEMB_STAT
SET DisConnectTM = (getdate()),
connectstat = 0
WHERE memb___id = @uid END ELSE BEGIN
INSERT INTO MEMB_STAT (memb___id, DisConnectTM, connectstat)
VALUES (@uid,(getdate()),0) END
IF(@@Error <> 0)
ROLLBACK TRANSACTION
ELSE
COMMIT TRANSACTION
SET NOCOUNT OFF END
Agora o ultimo passo é criar novamente a tabela
Código:
USE [MuOnline]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[MEMB_STAT](
[memb___id] [nvarchar](10) NOT NULL,
[ConnectStat] [tinyint] NULL,
[ServerName] [nvarchar](20) NULL,
[IP] [nvarchar](15) NULL,
[ConnectTM] [smalldatetime] NULL,
[DisConnectTM] [smalldatetime] NULL,
CONSTRAINT [PK_MEMB_STAT] PRIMARY KEY CLUSTERED
(
[memb___id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[MEMB_STAT] ADD CONSTRAINT [DF_MEMB_STAT_ConnectTM] DEFAULT (getdate()) FOR [ConnectTM]
GO
ALTER TABLE [dbo].[MEMB_STAT] ADD CONSTRAINT [DF_MEMB_STAT_DisConnectTM] DEFAULT (getdate()) FOR [DisConnectTM]
GO
Agora é só realizar seus testes, qualquer coisa, comenta seu resultado.