代码之家  ›  专栏  ›  技术社区  ›  Joseph Farrar

如何在插入时修改数据

  •  1
  • Joseph Farrar  · 技术社区  · 7 年前

    有一个应用程序收集一些数据并将其放入我们的数据库,但问题是它收集的日期在客户端被修改为“DDD DDMMMYYYY”:

    'Sat 20May2017'
    

    表列定义为:

    SOURCE_DATE DATE NOT NULL
    

    按原样,插入失败:

    但他们 使用“DDMMMYYYY”格式(我已经测试过了)。

    CREATE TRIGGER T_FORMAT_DATE
    ON MY_TABLE
    INSTEAD OF INSERT AS
    BEGIN
       SET NOCOUNT ON;
    
       INSERT INTO MY_TABLE(SOURCE_DATE)
       SELECT RIGHT(SOURCE_DATE, LEN(SOURCE_DATE) - 4)
       FROM inserted;
    END
    

    旁白:有没有办法知道触发器何时/是否执行?

    3 回复  |  直到 7 年前
        1
  •  0
  •   Yogesh Sharma    7 年前

    如果要删除星期六、星期日、星期一等。。您可以使用 try\u解析 function

    DECLARE @DATE NVARCHAR(80);
    SET @DATE = 'Sat 20May2017';
    SELECT Replace(CONVERT(VARCHAR(11), TRY_PARSE(@DATE AS DATE), 106), ' ', '');
    
        2
  •  0
  •   Yogesh Sharma    7 年前

    DECLARE @DATE NVARCHAR(80);
    
    SET @DATE = 'Sat 20May2017'
    
    select LTRIM(REPLACE(@DATE, SUBSTRING(@DATE, 1, 3), '')) DATE
    

    输出:

    +===========+
    | DATE      |
    +===========+
    | 20May2017 |
    +-----------+
    
        3
  •  0
  •   Joseph Farrar    7 年前

    最好的 回答,但这是 方式:

    我创建了一个“中间人”表,用于设置 SOURCE_日期 字段到 .

    然后,我的触发器或“Yogesh”或“rahul触发器”将正常工作。问题是检查了表约束 插入时 在执行触发器之前 .