2016-11-17 4 views
0

Я хочу использовать планировщик для достижения следующих случая:Использование планировщика в Web API usung C#

Предположим, у меня есть десять пользователей в моей базе данных, и для всех этих пользователей у меня есть новая таблица с UserId как внешний ключ. Скажем, UserId, Column1, Column2, CurrentYear являются столбцами таблицы. Теперь, когда меняются 31 декабря (24:00:00), мне нужно добавить всех существующих пользователей в таблицу выше с CurrentYear = newYear, Column1 и Column2 с нулевым значением каждый год. Так что я могу рассмотреть все обновленные значения для каждого пользователя в новом году. Старое значение будет доступно только для ведения записей. Я здесь совершенно новый. Как я могу это достичь?

+0

что вы пытались раньше? Вы можете написать какое-то запланированное событие на уровне базы данных. См. Здесь [здесь] (https://www.sitepoint.com/how-to-create-mysql-events/). Или вы можете написать службу Windows, которая будет запускаться один раз в год и делать все, что вам нужно. – Disappointed

+0

Нет сэра. Как я уже говорил, я буду работать над этим в первый раз. И у меня есть ограничение по времени, поэтому я сразу прихожу сюда, чтобы получить быстрое решение. – Dipak

ответ

0

Одним из возможных решений вашей проблемы напрямую работают с вы используете базу данных events.

Вы создаете событие, которое начинается в первый день следующего года и повторяется каждый год. Когда он запускается, он считывает все записи из таблицы и вставляет их обратно с обновленными значениями. Предположим, что ваш стол называется "users", он будет выглядеть примерно так:

CREATE EVENT update_users 
ON SCHEDULE EVERY 1 YEAR 
STARTS '2017-01-01 00:00:00' 
DO 
    INSERT INTO users (UserId, CurrentYear) 
    SELECT UserId, YEAR(CURDATE()) 
    FROM users 
    WHERE CurrentYear = YEAR(CURDATE()) - 1 
+0

OK Позвольте мне проверить сэра. Благодарю. – Dipak

+0

Сэр Мне нужно вставить значения в более двух столбцов, тип данных которых равен float. Я не могу повторить эти значения в своей новой вставке. Я хочу нуль в обоих столбцах. – Dipak

+0

INSERT INTO users (UserId, Column1, Column2, Year): Я думаю, если я устанавливаю оба значения по умолчанию для столбца 0. Тогда не нужно что-то делать в нашем случае, чтобы сделать его равным нулю. правильно? – Dipak

0

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

Имеется несколько планировщиков заданий. У вас есть служба Windows, которая использует планировщик. Вы могли бы взглянуть на Quartz.NET, который предлагает богатый набор API-интерфейсов для достижения вашей requirement.Below является образцом иметь триггер дек 31:

  // Define your job 
      IJobDetail yearlyJob = JobBuilder.Create<YourJobClass>() 
       .WithIdentity("yearly", "group1") 
       .Build(); 
      // Trigger the job to run 31st Dec 11.59.59 every 12 months 
      ITrigger trigger_tcs = TriggerBuilder.Create() 
       .WithIdentity("Run Infinitely every 2nd day of the month", "Monthly_Day_2") 
       .StartNow() 
       .WithSchedule(CronScheduleBuilder.CronSchedule("59 59 23 31 12 ? * ")) 
       .Build(); 
Смежные вопросы