#sql #database #triggers #getdate
#sql #База данных #срабатывает #getdate
Вопрос:
У меня есть этот триггер — можете ли вы исправить ошибку, пожалуйста, в этом коде?
INSERT INTO trSMSPoolHeader (SMSGatewayServiceCode, IsSent, SendDate, CreatedDate,
LastUpdatedDate, CompanyCode, StoreTypeCode, MessageResponseID,
IsCommonMessageText, IsBusy, MessageReasonCode, SMSForCustomerRelationshipID, IsMail, MessageSubject)
SELECT
, IsSent = 0
, SendDate = GETDATE()
, CompanyCode = 1
, StoreTypeCode = 5
, MessageResponseID = N''
, IsCommonMessageText = 0
, IsBusy = 0
, MessageReasonCode = 4
, SMSForCustomerRelationshipID = N''
, SMSGatewayServiceCode = N'AjansIletisim'
, CreatedDate = GETDATE()
, LastUpdatedDate = GETDATE()
, IsMail = 0
, MessageSubject = N'Kampanya'
FROM
#SendSms
WHERE
PhoneNumberForSMS <> ''
AND DiscountOfferCode = N'Taahhüt-01'
Ошибка SQL:
Ошибка преобразования при преобразовании значения varchar ‘2020-11-26’ в бит типа данных
Комментарии:
1. Чтобы ответить на ваш вопрос, вы должны добавить структуры таблиц с типами данных и добавить свой тег СУБД, несмотря на то, что об этом можно догадаться.
Ответ №1:
- порядок столбцов в вашем операторе insert должен совпадать с порядком столбцов в вашем операторе select
- либо вы используете значения из таблицы #SendSms в trSMSPoolHeader, либо жестко закодированные значения. прямо сейчас вы выбираете из временной таблицы, но вставляете жестко закодированные значения, конечно, это работает, но это неправильный способ сделать это.
Ответ №2:
Этот триггер пытается вставить значения типа datetime в поля с типом bit . Скорее всего, это эти поля, судя по их именам: ,CreatedDate=GETDATE() ,LastUpdatedDate=GETDATE()
Поля в таблице: MessageReasonCode, SMSForCustomerRelationshipID