-5

テーブルにデータが追加されたときにテーブルを作成するトリガーが必要です。テーブル名は、挿入されたエントリの名前でなければなりません。

例: 患者が病院に登録すると、paitientDetail テーブルに行が挿入されます。トリガーは、患者の名前を持つテーブルを作成する必要があります。

4

1 に答える 1

3

この質問に答える前に、これはひどい考えだと前置きしなければなりません。 患者ごとに新しいテーブルを作成しないでください。 これにより、今後多くの問題が発生します。

たとえば、100 人の患者がいる場合、100 個のテーブルが必要になります。それでは、すべての患者のデータを返す必要がある場合はどうすればよいでしょうか。

SQL Server でこのタイプのプロセスを実行する必要がある場合は、次の方法で実行できます。

サンプルテーブル:

CREATE TABLE [dbo].[Test](
    [id] [int] NOT NULL,
    [name] [varchar](50) NOT NULL
) ON [PRIMARY]

Your Trigger動的 SQL を使用して、挿入されたデータから名前を取得します。

CREATE TRIGGER dbo.testTrg
   ON  dbo.test
   AFTER INSERT
AS 
BEGIN
    SET NOCOUNT ON;

    declare @newtable varchar(50)
    set @newtable = (select quotename(name) from inserted)

    declare @sql varchar(max)

    set @sql = 'create table ' + @newtable + '
        ( 
            [id] [int] NOT NULL, 
            [newColumn1] [varchar](50) NOT NULL
        ) ON [PRIMARY]' 

    exec(@sql)

END

このトリガーは、テーブルを作成します。

CREATE TABLE [dbo].[test1](
    [id] [int] NOT NULL,
    [newColumn1] [varchar](50) NOT NULL
) ON [PRIMARY]

患者にとってはるかに優れた設計は次のとおりです。1 つの患者テーブルを用意してから、必要に応じて追加のテーブルを作成して、患者の追加の詳細を含めます。

Patient Table:
id int, -- PK
name varchar(50)

Doctor Table
id int, -- PK
name varchar(50)

Patient_Doctor table
p_id int,  -- PK -- FK to Patient Table
d_id int  -- PK  -- FK to Doctor Table
于 2012-08-06T17:21:55.840 に答える