Håller på att kolla lite på timestamp i SQL Server 2005. Men fattar inte riktigt hur det fungerar, som jag har förstått det ska det vara bra att kolla timestamp när man uppdaterar en post mm. När jag gör en timstamp så blir ju datatypen binary data. Hur kollar jag detta i min SP? Nån som kan förklara hur det funkar?Hur fungerar TimeStamp?
----------------------------------------------EDIT-------------------------------------
Jag har nu gjort så här, det ska väl fungera? Är lite svårt att simulera detta.
<code>
ALTER PROC TestCase.updateInputOutput
-- Declares parameters...
@inputOutputID int,
@task varchar(100),
@input varchar(500),
@output varchar(500)
AS
-- Declares local variables and givs them default values....
DECLARE @errMess varchar(100)
DECLARE @timeStamp timestamp
SET @errMess = null
SET NOCOUNT ON -- Disables "Row affected"...
BEGIN TRY
-- Checks so the post really exists...
IF(EXISTS(SELECT inputOutputID FROM inputOutput WHERE inputOutputID = @inputOutputID))
BEGIN
-- Gets the timestamp...
SELECT @timeStamp = [timeStamp] from inputOutPut WHERE inputOutputID = @inputOutputID
SET @errMess = 'Det gick inte att uppdatera posten, vg försök igen.'
-- Do the update...
UPDATE TestCase.inputOutput
SET -- Inserts the new values...
task = @task,
[input] = @input,
[output] = @output
-- If someone else has updated the post, we can not do the update beacuse the timestamp will not match...
WHERE inputOutputID = @inputOutputID AND [timeStamp] = @timeStamp
IF(@@ROWCOUNT != 1) -- Checks if the insert was succesfull...
RAISERROR('', 16, 1) -- If not, we rais an error...
END
ELSE -- If the post doesn't exists...
BEGIN
SET @errMess = 'Det gick inte att hitta posten.'
RAISERROR('', 16, 1)
END
END TRY
BEGIN CATCH
RAISERROR(@errMess, 16, 1) -- Rais an error and passes the @errMess variable...
RETURN -- Leave the procedure...
END CATCH
</code>