#sql #sql-server #ssms
#sql #sql-сервер #ssms
Вопрос:
Я пытаюсь написать запрос, который, если пользователь действителен, сохраняет время в другой таблице. У меня есть первая часть, чтобы проверить, действительны ли учетные данные для входа. Но вторую часть я не знаю: получите id
зарегистрированное электронное письмо, затем используйте это id
, чтобы записать его во вторую таблицу и вставить или обновить время в этой таблице.
Это моя первая часть запроса / хранимой процедуры
Create Procedure spAuthenticateUser
@Email nvarchar(100),
@Wachtwoord nvarchar(100)
as
Begin
Declare @Count int
Select @Count = COUNT(Email) from Signin
where [Email] = @Email and [Wachtwoord] = @Wachtwoord
if(@Count = 1)
Begin
Select 1 as ReturnCode
End
Else
Begin
Select -1 as ReturnCode
End
End
Это уже работает. Я попытался добавить
if(@Count = 1)
Begin
Select 1 as ReturnCode
INSERT INTO Logintijd (Id, Tijd)
Select Id from Signin where [Email] = @Email
End
Это таблица, которую я пытался использовать
Create table Signin
(
Id int identity primary key not null,
Naam nvarchar(50) not null,
Email nvarchar(50) unique not null,
Wachtwoord nvarchar(50) not null
)
и
Create table Logintijd
(
Id int not null primary key,
Tijd smalldatetime not null
)
Пытался сделать это с помощью обновленного класса
IF EXISTS (Select Tijd from Logintijd Inner join Signin ON Logintijd.Id = Signin.Id)
update Logintijd set Tijd = GETDATE() From Logintijd Inner join Signin ON Logintijd.Id = Signin.Id
ELSE
INSERT INTO Logintijd (Id, Tijd)
Select Id, GETDATE() from Signin where [Email] = @Email
Это действительно обновляет и вставляет, но делает это для всего элемента в классе
Я знаю, что должен что-то сделать с smalldatetime и функцией Getdate()
Надеюсь, это достаточно понятно; если нет, пожалуйста, дайте мне знать.
Ответ №1:
Похоже, вам просто нужно это:
if(@Count = 1)
Begin
Select 1 as ReturnCode
INSERT INTO Logintijd (Id, Tijd)
Select Id, GETDATE() from Signin where [Email] = @Email
End
Комментарии:
1. О, вау, не думал, что это будет так просто. Большое спасибо, не думал, что GETDATE () можно использовать подобным образом
2. Но обновляет ли это время, когда пользователь выходит из системы, и регистрирует ли более позднее время снова
3. Это ВСТАВКА, поэтому нет, она не выполняет ОБНОВЛЕНИЕ, но вы можете использовать GETDATE() при ОБНОВЛЕНИИ таким же образом.
4. Я пытался выяснить, как работает класс update, но я не могу найти, в чем проблема, я публикую то, что я пробовал в исходном сообщении, надеюсь, вы все равно ответите
5. Из вашего вопроса неясно, что вы хотите, чтобы обновление выполняло. Возможно, вы хотите использовать