У меня есть такая таблица по умолчанию
+--+----------+--------+------+
|Id|class_name|class_id|medals|
+--+----------+--------+------+
|1 |7IPA1 |7 |3 |
|2 |7IPA2 |7 |2 |
|3 |7IPA3 |7 |5 |
|4 |8IPA1 |8 |1 |
|5 |8IPA2 |8 |7 |
|6 |8IPA3 |8 |3 |
+--+----------+--------+------+
Который будет выполнен
UPDATE MYTABLE
SET CLASS_ID = SUBSTRING(CLASS_NAME,1,4)
+--+----------+--------+------+
|Id|class_name|class_id|medals|
+--+----------+--------+------+
|1 |7IPA1 |7IPA |3 |
|2 |7IPA2 |7IPA |2 |
|3 |7IPA3 |7IPA |5 |
|4 |8IPA1 |8IPA |1 |
|5 |8IPA2 |8IPA |7 |
|6 |8IPA3 |8IPA |3 |
+--+----------+--------+------+
Как сохранить этот запрос? Так что когда я вставляю новые данные, этот запрос выполняется автоматически
Я использую студию управления сервером sql 2012
3 ответа
Возможно, вы можете использовать тигра, как показано ниже
create trigger trigger_class_id on MYTABLE
After
insert
as
UPDATE
MYTABLE
SET
CLASS_ID = SUBSTRING(CLASS_NAME, 1, 4) WHERE ID=inserted.ID
Вы не хотите делать это как обновление. Вместо этого вы хотите иметь вычисляемый столбец .
alter table mytable add class_id as (left(class_name, 4));
Конечно, перед выполнением этой команды вы захотите убедиться, что имя столбца (class_id
) еще не находится в таблице.
Вы можете использовать tigger или добавить этот запрос вместе с запросом вставки. тогда ваш запрос будет.
Insert into MYTABLE (class_name,class_id,medals) values('','','')
UPDATE MYTABLE
SET CLASS_ID = SUBSTRING(CLASS_NAME,1,4)
Похожие вопросы
Новые вопросы
sql
Язык структурированных запросов (SQL) - это язык запросов к базам данных. Вопросы должны включать примеры кода, структуру таблицы, примеры данных и тег для используемой реализации СУБД (например, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 и т. Д.). Если ваш вопрос относится исключительно к конкретной СУБД (использует определенные расширения / функции), используйте вместо этого тег этой СУБД. Ответы на вопросы, помеченные SQL, должны использовать стандарт ISO / IEC SQL.