คือว่าพอจะมีโค้ดหรือแนวทางที่ประมาณนี้ไหมครับ .. .
1. ใน DB มีหลายตารางมากๆๆ และในแต่ละตารางก็มีหลายฟิลล์
2. บางตารางมีข้อมูลอยู่เป็นหมื่นๆเรคคอร์ด
ต้องการ
1. ผู้ใช้งานระบุ text ตัวเก่า และตัว text ตัวใหม่(เพื่อไปแทนที่)
2. โค้ดจะทำการ select หาและเปลี่ยนค่าในทุกๆฟิลล์ทุกๆตารางที่อยู่ใน DB ก้อนนี้ที่มีค่าเดิมตรงกับ textเก่า และ update เป็น text ใหม่
** ไม่เอาวิธี SELECT หาทีละฟิลล์ทีละตารางมันเนื่อย T__T พอจะมีวิธีที่รวบรัดเลยว่าทุกๆอย่างใน DB นี้ที่ตรงกับเงื่อนใขให้ทำการอัพเดทไหมครับ
อัพเดตทุกตาราง ทุกฟิลด์ (ต้อง list ทั้งชื่อตารางและชื่อฟิลด์)
dump แล้ว replace ใน text editor
Date :
2014-02-26 08:06:43
By :
itpcc
No. 5
Guest
Code (SQL)
USE sexDB
GO
GO
GO
/*Always GO GO*/
DECLARE @iKey INT
DECLARE @cTableName VARCHAR(212)
DECLARE @cColumnName VARCHAR(224)
DECLARE @TableVar69 TABLE (
iKey INT,
Table_Name VARCHAR(212),
Schema_Name VARCHAR(224),
Column_Name VARCHAR(236)
)
INSERT INTO @TableVar69
SELECT ROW_NUMBER() OVER (ORDER BY a.NAME), a.NAME AS Table_Name, SCHEMA_NAME(schema_id) AS Schema_Name, b.NAME AS Column_Name
FROM sys.tables AS a
INNER JOIN sys.columns AS b ON a.OBJECT_ID = b.OBJECT_ID
WHERE b.NAME = 'JimColumnName'
ORDER BY Table_Name
WHILE EXISTS(SELECT 'ไม่เคยรักอะไรมากไปกว่าจิ๋ม' FROM @TableVar69)
BEGIN
SELECT TOP 1 @iKey = iKey, @cTableName = Table_Name, @cColumnName = Column_Name FROM @TableVar69
EXECUTE('UPDATE ' + @Tablename + ' SET ' + @ColumnName + ' = ' + 'aaa7787') /* Processing*/
DELETE FROM @TableVar69 WHERE iKey = @iKey
END
GoodLuck
Date :
2014-02-26 08:32:18
By :
love9713
No. 6
Guest
MySQL Fox&uck(Line : 28)
Code (SQL)
SET strSQL = CONCAT('UPDATE TableName ', ' SET JimColumnName = ', 'aaa7787')
PREPARE stmt FROM @strSQL ;
EXECUTE stmt ;
DEALLOCATE PREPARE stmt ;
USE [sexDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[ReplaceValue_InTables]
@pColumnName AS VARCHAR(224),
@pSValue AS VARCHAR(236),
@pDValue AS VARCHAR(248)
AS
BEGIN
DECLARE @iKey INT
DECLARE @cTableName VARCHAR(212)
DECLARE @TableVar69 TABLE (
iKey INT,
Table_Name VARCHAR(224),
Schema_Name VARCHAR(236)
)
INSERT INTO @TableVar69
SELECT ROW_NUMBER() OVER (ORDER BY a.NAME), a.NAME AS Table_Name, SCHEMA_NAME(schema_id) AS Schema_Name
FROM sys.tables AS a
INNER JOIN sys.columns AS b ON a.OBJECT_ID = b.OBJECT_ID
WHERE b.NAME = @pColumnName
ORDER BY Table_Name
WHILE EXISTS(SELECT 'ไม่เคยรักอะไรมากไปกว่าจิ๋ม' FROM @TableVar69)
BEGIN
SELECT TOP 1 @iKey = iKey, @cTableName = Table_Name FROM @TableVar69
EXECUTE('UPDATE ' + @Tablename + ' SET ' + @pColumnName + ' = ' + @pDValue + ' WHERE ' + @pColumnName + ' = ' + @pSValue) /* Processing*/
DELETE FROM @TableVar69 WHERE iKey = @iKey
END /* End While*/
END /* End As*/
GO
[x] ควรจะดัก Error ด้วย Begin Try ... Catch.. End ขอให้พระเจ้า อวยพร