第一次触发
ALTER TRIGGER [dbo].[Price_Modified]
ON [dbo].[stock_recieve]
AFTER UPDATE
AS
SET NOCOUNT ON;
IF UPDATE (Stock_out)
BEGIN
UPDATE s
SET value = new.Item_Price * new.Stock_out
FROM stock_recieve AS s
JOIN inserted AS new ON new.[Bill No] = s.[Bill No]
JOIN deleted AS old ON old.[Bill No] = s.[Bill No]
END;
Run Code Online (Sandbox Code Playgroud)
第二个触发器。
ALTER TRIGGER [dbo].[newval]
ON [dbo].[stock_recieve]
AFTER UPDATE
AS
SET NOCOUNT ON;
IF UPDATE (Stock_out)
BEGIN
UPDATE s
SET Uservalue = new.Item_Price * new.Stock_out
FROM stock_recieve AS s
JOIN inserted AS …Run Code Online (Sandbox Code Playgroud) 我创建了一个查询,我想将结果插入到另一个表中。它将每天作为作业运行,导入的数据仍将保留在结果集中。如果数据已存在于目标表中,我不希望导入数据。查询如下所示:
WITH cteUniquePages
(
CorrelationID,
Title,
URL,
HitDate,
TotalVisitsOnDate,
DontUseThisDate)
AS
(
SELECT DISTINCT
CorrelationID,
Title,
URL,
HitDate,
COUNT(HitDate) OVER (PARTITION BY URL, HitDate) 'TotalVisitsOnDate',
CAST(LogTime AS date) 'DontUseThisDate'
FROM
(SELECT
CorrelationId,
UserLogin,
LogTime,
Title,
CONCAT(
(CASE
WHEN WebUrl <> '' THEN CONCAT(ServerUrl,'/') ELSE ServerUrl END),
WebUrl,DocumentPath) 'URL',
CONCAT(
CASE
WHEN (LEN(DATEPART(day,LogTime)))=1 THEN CONCAT('0',DATEPART(day,LogTime)) END,
CASE
WHEN (LEN(DATEPART(day,LogTime)))=2 THEN (DATEPART(day,LogTime)) END,'-',
CASE
WHEN (LEN(DATEPART(month,LogTime)))=1 THEN CONCAT('0',DATEPART(month,LogTime)) END,
CASE
WHEN (LEN(DATEPART(month,LogTime)))=2 THEN (DATEPART(month,LogTime)) END,
'-', DATEPART(year,LogTime)) 'HitDate'
FROM WSS_Logging.dbo.RequestUsage
WHERE UserLogin …Run Code Online (Sandbox Code Playgroud) 我有一个视图,它抓取了我希望能够搜索的大量数据。视图设置了以下列:
Part_Number、说明、信息、供应商、制造商、类别、子类别、货币、价格、折扣。
我希望创建一个存储过程,它可以让我在视图中搜索我专门查找的数据。就像是:
SELECT * FROM PartsData
WHERE Part_Number = '0010.05.20.20'
Run Code Online (Sandbox Code Playgroud)
现在我的第一个想法是设置过程,以便它寻找的唯一参数是 a VARCHAR,它基本上包含整个WHERE子句的内容。这听起来像是行得通的。
但是,我是否可以使用可选参数设置存储过程?我不确定这是否是您可以在 SQL 中执行的操作。
如果没有,我最初的实施想法是我最好的选择吗?因为看起来应该有更好的方法来做到这一点。:\
有时WHERE子句可能很长,例如:
WHERE Description LIKE '%cap'
AND Supplier LIKE 'A2A Systems'
AND Manufacturer LIKE 'Vario'
Run Code Online (Sandbox Code Playgroud) 我正在尝试学习“SQL 注入”概念,并尝试练习一些 Kali 工具来学习,但有一个我不明白的问题,我的问题是为什么大多数工具都需要以“AAA.BBB?id”结尾的 URL? =000" 作为注入的输入字符串。
我们的数据库中有两个名为“ClientIncome”和“PartnerIncome”的现有列。我们想添加一个名为“HouseholdIncome”的新列
我们想将“ClientIncome”和“PartnerIncome”中的值添加到新的“HouseholdIncome”列中?
这是我们数据库的一个小例子。
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Incomes](
[Id] [int] IDENTITY(1,1) NOT NULL,
[ClientIncome] [float] NOT NULL,
[PartnerIncome] [float] NULL,
[HouseholdIncome] [float] NULL
) ON [PRIMARY]
GO
SET IDENTITY_INSERT [dbo].[Incomes] ON
GO
INSERT [dbo].[Incomes] ([Id], [ClientIncome], [PartnerIncome], [HouseholdIncome]) VALUES (1, 130.77, NULL, NULL)
GO
INSERT [dbo].[Incomes] ([Id], [ClientIncome], [PartnerIncome], [HouseholdIncome]) VALUES (2, 294.82, 339.28, NULL)
GO
INSERT [dbo].[Incomes] ([Id], [ClientIncome], [PartnerIncome], [HouseholdIncome]) VALUES (3, 0, NULL, NULL)
GO
INSERT [dbo].[Incomes] ([Id], [ClientIncome], [PartnerIncome], [HouseholdIncome]) …Run Code Online (Sandbox Code Playgroud) 我知道 MS SQL Server 的默认 TCP 端口是 1433,出于某些安全原因最好更改它。但是我想知道SQL Server选择哪个端口而不是1433更好,才能正常工作,不干扰其他程序的工作?如果我选择一个已经被其他程序使用的端口怎么办?
谢谢你的时间!
表格1
Id Name DemoID
1 a 33
2 b 44
3 c 33
4 d 33
5 e 44
Run Code Online (Sandbox Code Playgroud)
表2
Id DemoID IsTrue
11 33 1
12 44 1
Run Code Online (Sandbox Code Playgroud)
现在我们可以使用以下 2 个使用连接和使用子查询的查询来找到表 2 中存在哪个 DemoID,但是对于更多的记录,哪个更准确/更相关?
使用加入 -
SELECT Table1.Id FROM Table1 Table1 join Table2 Table2 on Table1.DemoID = Table2.DemoID
WHERE Table2.IsTrue = 1
Run Code Online (Sandbox Code Playgroud)
使用子查询 -
SELECT Table1.Id FROM Table1 Table1
WHERE Table1.DemoID in (select Table2.DemoID from Table2 Table2)
Run Code Online (Sandbox Code Playgroud) 这是指这个问题:Duplicate records returned from table with no duplicates
“读提交”隔离级别假定一个事务可以以不同的方式读取同一条记录,但并不明确暗示记录可以重复。我同意同一事务中的两个语句可以返回不同的数据集,但返回带有重复记录的相同数据集听起来很疯狂。
据我所知,只有 MS SQL Server 有这种行为。
如果它符合ANSI SQL 标准定义的“Read Committed”隔离级别,请证明或反驳。
我正在使用 MSSQL 2008。
我的 INSERT 语句如下:
INSERT INTO [DB1].[dbo].[SpotArtSong](ID)
SELECT SNG.S_ID
FROM [DB1].[dbo].[SpotArtSong] SPOT
INNER JOIN [DB2].[dbo].[nt-art] ART
ON ART.Artist_Name LIKE SPOT.[Artist]+'%'
INNER JOIN [DB2].[dbo].[nt-sng] SNG
ON ART.Artist_ID = SNG.Artist_ID
AND left(SNG.SONG_TITLE,10) = left(SPOT.[Song],10)
WHERE spot.BDSID is NULL
Run Code Online (Sandbox Code Playgroud)
[DB1].[dbo].[SpotArtSong] 上的 [ID] 列有一些我试图替换的空值。我找到了替换项,在查看完整的列结果时,我对从 SNG.S_ID 返回的搜索结果感到满意。我正在尝试将该一列插入到 [DB1].[dbo].[SpotArtSong] 上的一列中。
本质上,我将一些数据报废到 [DB1].[dbo].[SpotArtSong] 中,并将其与 [DB2].[dbo].[nt-art] (ART) 和 [DB2] 之间的一些现有生产数据进行匹配.[dbo].[nt-sng] (SNG)。我知道 ART 和 SNG 中的数据是正确的,我正在将其与 SPOT 中报废的数据相关联
失败声明说:
Cannot insert the value NULL into column 'Artist', table
'DB1.dbo.SpotArtSong'; column does not allow nulls. INSERT
fails.
The …Run Code Online (Sandbox Code Playgroud) 关于 SQLOS 的执行模型(RUNNING 状态、RUNNABLE 队列、WAITER 列表),当当前正在进行 RAM 中页面的逻辑读取时,任务的状态是什么?
如果是 WAITER 列表,最流行的等待类型是什么?
我可以以某种方式测量此类操作所需的时间吗?
我知道很多逻辑读取会减慢您的查询速度,很多表/索引扫描(已经位于缓冲池中)会减慢您的查询速度 - 我只想知道它们如何出现在统计信息/dmv 中或如何将其与其他数据区分开来“经典”等待类型。