2013-07-16 2 views
1

У меня есть таблица с 2 столбцами dateRecieved и dateDue. Я знаю, как сделать столбец dateNow показывать сегодняшнюю дату по умолчанию, используя: DEFAULT GETDATE() Пользователь может затем изменить столбец dateRecieved на любую дату, которую они хотят.SQL Default Constraint

После изменения пользователем столбца DateRecieved; как мне установить столбец dateDue, чтобы он по умолчанию показывал дату x дней от dateRecieved?

Я посмотрел на этот ответ, но мне нужно обратиться к другому столбцу. Need to add constraint: date plus 10 days

Есть ли способ, с помощью которого dateRecieved может автоматически изменять свое значение при изменении dateRecieved? Пользователь должен иметь возможность переопределять значения по умолчанию в обоих этих столбцах.

Я использую W3 школы SQL учебник, но у него не было и ответить я не мог найти на StackOverflow либо http://www.w3schools.com/sql/sql_default.asp

use current date as default value for a column

Благодарности

ответ

1

Так что, когда вы говорите, что «пользователь изменяет» вы говорите о UPDATE.

Значения DEFAULT относятся только к операторам INSERT.

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

Что вы хотите сделать, это ВСТАВИТЬ ваши строки (разрешающие значения DEFAULT «произойти»), а затем ОБНОВИТЬ ваши строки с указанными вами значениями.

+1

Спасибо, я обязательно буду помнить ваш совет – user1234567890987654321

0

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

Этот ответ может направить вас в правильном направлении: How to: Create trigger for auto update modified date with SQL Server 2008

+0

Спасибо, ссылка полезна. – user1234567890987654321