我想知道 sql server 中的非关键属性是什么意思。这个想法与表有关,我很困惑。这是否意味着除主键之外的列
问题:我写了一个触发器,它应该INVOICE
在INSERT
进入表后更新表,LINE
但它不会更新发票表。触发器触发但Update
语句块不会执行。
我在执行INSERT
到行表时进行了调试,并发现一旦它到达UPDATE
语句,它就会跳过它并且不运行该代码。几天来,我一直试图弄清楚这一点。
这是我的触发代码
ALTER TRIGGER [dbo].[trgInvoiceInsert] ON [dbo].[LINE]
AFTER INSERT
AS
declare @linUnits numeric(9,2);
declare @linPrice numeric(9,2);
declare @invNum int;
select @linUnits = LINE_UNITS from inserted;
select @linPrice = LINE_PRICE from inserted;
select @invNum = INV_NUMBER from inserted;
BEGIN
UPDATE i --From here it jumps to the start of the next Update
SET INV_SUBTOTAL = INV_SUBTOTAL + (@linUnits * @linPrice)
FROM dbo.INVOICE as i
WHERE i.INV_NUMBER = @invNum …
Run Code Online (Sandbox Code Playgroud) 我有一个table
像下面 -
ID | Reported Date | Device_ID
-------------------------------------------
1 | 2016-03-09 09:08:32.827 | 1
2 | 2016-03-08 09:08:32.827 | 1
3 | 2016-03-08 09:08:32.827 | 1
4 | 2016-03-10 09:08:32.827 | 2
5 | 2016-03-05 09:08:32.827 | 2
Run Code Online (Sandbox Code Playgroud)
现在,我想要一个top 1
row
基于date column
每个device_ID
预期产出
ID | Reported Date | Device_ID
-------------------------------------------
1 | 2016-03-09 09:08:32.827 | 1
4 | 2016-03-10 09:08:32.827 | 2
Run Code Online (Sandbox Code Playgroud)
我在用SQL Server 2008 R2
.我可以去编写Stored Procedure
处理它,但想用简单的查询来做.
****************编辑************************** …
我正在使用SQL Server 2008R2.我试图在输出中获取日期的一部分,我的列是datetime
数据类型.例如,如果当前日期和时间是2016-06-28 17:34:12.060
,那么我需要输出17:00
只有小时和:00
分钟.
我一直试过这个,直到现在
Select DateName(HH,SUBSTRING('2016-06-28 17:34:12.060',12,5)) +':00'
Run Code Online (Sandbox Code Playgroud)
这给了我正确的输出.但是当我传递datetime
数据类型的列名,然后它给出错误,
Select DateName(HH,SUBSTRING(TimeInHour,12,5)) +':00'
Run Code Online (Sandbox Code Playgroud)
给出错误,
对于子字符串函数的参数1,参数数据类型时间无效.
我知道我SUBSTRING()
在错误的地方使用,但我真的不知道如何实现那个输出.帮助将非常明显.我需要输出为HH:00,小时将是00分钟以外的任何时间.
这就是我如何在返回单个数据集的过程中将数据集存储在表中.
CREATE TABLE #TEMP (amount DECIMAL(18, 2), extra VARCHAR(50))
INSERT INTO #TEMP (extra, amount)
EXEC sp_proc @para1, @para2, @para3
Run Code Online (Sandbox Code Playgroud)
现在我可以存储返回两个或多个表的过程中的数据集.如果可能,我该怎么办?
我不打算创建临时全局表,因为我必须改变多个过程.我可以在不改变程序的情况下这样做吗?
我有一个任务是获取一些在SQL Server 2012上正常工作的代码,以便在SQL Server 2008 R2上工作.我收到了这个错误:
附加信息:'<'附近的语法不正确
当我尝试运行我的代码时,我发现我的SQL代码行中出了问题
ALTER TABLE [dbo].[WorkTimeEntries]
ADD [TimeFinishedForRuntime] AS ISNULL([TimeFinished],
IIF ([TimeStarted] < SYSUTCDATETIME(), [dbo].[udf_GetCurrentDateTimeOffsetInTimeZone](DATENAME(TZOFFSET, [TimeStarted])), [TimeStarted]));
Run Code Online (Sandbox Code Playgroud)
我已经读到,在这种情况下,当人们试图获得约会时发生了某种错误,但我不确定我的情况有什么问题.
我需要将值转换为SQL Server DateTime
.
数据如下所示:
我试过了
CONVERT(DATE, '20161021-12:55:16.000', 102)
Run Code Online (Sandbox Code Playgroud)
它会抛出一个错误.
我可以在SQL中获得帮助,将这些样本转换为有效的日期时间吗?
这些值也是UTC.
我需要将它们转换为EST.
感谢您的帮助.
sql sql-server sql-server-2005 sql-server-2008 sql-server-2008-r2
AB77085F-C0BB-4C78-B2F2-3H8F6F8D0C28
Run Code Online (Sandbox Code Playgroud)
它是使用NEWID()Sql server 2008 R2函数生成的
在uniqueidentifier字段中不接受它
它对C#中的Guid.TryParse()无效
我正在做这些连接:
from #lps_at_lines2 as l2
left join jobmatl as jm on l2.item = jm.item
inner join job as j on jm.job = j.job
and jm.suffix = j.suffix
Run Code Online (Sandbox Code Playgroud)
我不确定联合将如何解决,官方文档就像读取象形文字给我.
我的猜测是,首先#lps_at_lines2
得到LEFT JOIN
' jobmatl
然后以某种方式job
得到INNER JOIN
'到jm之后.那是对的吗?
我正在使用SQL Server 2008 R2.我想使列数据不可删除.是否可以在不使用触发器的情况下使数据不可删除?如果是,请告诉我.
sql sql-server sql-server-2008 sql-server-2008-r2 sql-server-2008r2-express