now*_*ed. 1 sql t-sql sql-server triggers
我们在 db 中已经有这个表 ( IPConfig)。(SQL Server 2k8)
IP | Member
-----------------------
10.1.2.100 | Joe
10.2.2.200 | Maley
Run Code Online (Sandbox Code Playgroud)
现在,我应该有一个查询应该执行以下操作:
我从这个开始但无法继续。
IF (NOT EXISTS (SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'dbo'
AND TABLE_NAME = 'IPConfig'))
BEGIN
CREATE TABLE dbo.IPConfig (
IP CHAR(10) PRIMARY KEY NOT NULL,
Member VARCHAR(32) NOT NULL)
END
DECLARE @TempTable Table( -- Create a temp table.
IP CHAR(10) PRIMARY KEY NOT NULL,
Member VARCHAR(32) NOT NULL)
INSERT INTO @TempTable(
IP,
Member)
SELECT
'10.1.2.100', --Already existing Ip; dont insert
'Joe'
UNION SELECT
'10.2.2.200', --Already existing Ip; dont insert
'Maley',
UNION SELECT
'10.3.5.200', --New; Insert.
'NewUser',
UPDATE TABLE dbo.IPConfig
/// Here what should be done ? Should I loop through the temp table using triggers or what is the best way ?
Run Code Online (Sandbox Code Playgroud)
请举一个超级简单的例子。
抱歉,如果这是一个天真的问题;对于 MSSQL 编程来说是全新的。
小智 5
如果我理解正确的话,您只会将新的不匹配的 IP 插入 dbo.IPConfig。左外连接是这里的最佳选择。将结果插入到目标表中。
INSERT INTO dbo.IPConfig([IP], [Member])
SELECT a.[IP], a.[Member]
FROM @TempTable a
LEFT OUTER JOIN dbo.IPConfig b ON a.[IP]=b.[IP]
WHERE b.[IP] is null
Run Code Online (Sandbox Code Playgroud)