Ряды обновления в SQL, которые сохраняют старую стоимость

Мой стол в SQL

CREATE TABLE Person(
  Person_id INT PRIMARYKEY
  Person_name NVARCHAR(250)
)

Данные в столе:

INSERT INTO Person VALUES(1,'Peter')

Я хочу ряд обновления в SQL, которые сохраняют старую стоимость.

UPDATE Person SET Person_name = 'Mary' WHERE Person_id = 1

Эта команда не работает. Я хочу после колонки обновления Person_name - стоимость 'Питер Мэри'

1
добавлено отредактировано
Просмотры: 1
de
Не работает как? Можно ли опубликовать сообщение об ошибке? И какую систему управления базами данных вы используете?
добавлено автор e-mre, источник

2 ответы

Необходимо связать литеральное значение Мэри с ценностью колонки Person_name использование оператора связи RDBMS. Но, вы не определили, какой RDNMS вы используете.

Вот стандартный путь:

UPDATE Person 
SET Person_name = Person_name || ' ' || 'Mary' 
WHERE Person_id = 1;

Поскольку SQL Server использует + оператор как так:

UPDATE Person 
SET Person_name = Person_name + ' ' + 'Mary' 
WHERE Person_id = 1;
4
добавлено
It' s Работа. Искренне благодарит Вас.
добавлено автор user1761176, источник

Это - это, вы хотите к archieve?

Перед обновлением:

ID | Person_name
---+---------------
1  | Peter

После обновления:

ID | Person_name
---+---------------
1  | Peter Mary

Если вы, например, используете MySQL, вы могли бы использовать этот подход:

UPDATE Person 
SET Person_name = CONCAT(Person_name, ' ', 'Mary') 
WHERE Person_id = 1

Просто CONCAT бланк и новая стоимость к текущей стоимости.

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

4
добавлено