Member 11239384 Ответов: 1

Как создать хранимую процедуру для обновления двух таблиц с отношением внешнего ключа?


у меня есть две таблицы Tenant и lease, обе имеют общее поле tenant-id
Арендатор(tnant-идентификатора,имени,lname в,возраст) и аренды(Ласе-код,депозит,ввод-дата вылета-Дата,арендатор-ИД)

у меня есть asp.net это означает, что вы можете заполнить все остальные поля значениями diff(значениями, которые вы хотите обновить), но фамилия должна принадлежать арендатору, сведения о котором вы хотите обновить.

Что я уже пробовал:

обновление арендаторов установите fname=@fname....
где fname=@fname
обновление аренды депозит=@депозита
когда арендатор-ИД=@арендатор-ИД

это не работает

1 Ответов

Рейтинг:
2

OriginalGriff

Что ж... посмотрите, что вы делаете. Вы меняете имя арендатора на значение, с которого начинаете! Это означает, что первое обновление - по определению - никогда не вносит никаких изменений, и если бы оно это сделало, то, скорее всего, испортило бы вашу базу данных, поскольку фамилии даже близко не уникальны. И дефисы в названиях ваших столбцов тоже совсем не помогают...
Вероятно, вы хотели сделать вот что:

UPDATE Tenants SET fname=@fname WHERE [tnant-id] = @tenantId
UPDATE lease SET deposit=@deposit WHERE [tenant-id]=@tenantId

Но я бы посоветовал вам изменить названия столбцов:
Арендатор:
ID, 
fName
lName
Age
Аренда
ID
deposit
entryDate
departureDate
tenantID
Она более последовательна и с ней легче работать.


Member 11239384

да, но как система узнает, какую запись обновить, потому что не может кормить ее с помощью tenant-id, который она автоматически генерирует.И я не использую вид сетки, где я могу выделить запись для обновления

OriginalGriff

Вы не можете обновить запись, если она уже не существует, что означает, что у нее уже есть идентификатор.
Если вам нужен новый идентификатор, то это означает, что у вас есть новая запись, и вы не используете UPDATE для этого, вы используете INSERT.

Member 11239384

теперь я попробовал его так, и он не обновляется .потому что он не знает, какой идентификатор обновить.должен ли я создать текстовое поле для ввода идентификатора ?

OriginalGriff

Как вы собираетесь использовать текстовое поле в хранимой процедуре? :смеяться:
SQL Server не имеет прямого доступа к вашему пользователю...

Я думаю, что вам нужно сделать шаг назад на мгновение и подумать о том, чего именно вы пытаетесь достичь, а не о механике того, как это реализовать - Вы, кажется, немного смущены тем, что такое обновление.